Testing Google Calendar Auth. via GCSA

Docs

from gcsa.google_calendar import GoogleCalendar
from datetime import datetime, timedelta
calendar = GoogleCalendar('jasminexu@utexas.edu', 
                          credentials_path="credentials.json")
calendar
<gcsa.google_calendar.GoogleCalendar at 0x76ecc976ba10>
for cal in calendar.get_calendar_list():
    print(cal)
None - (jasminexu@utexas.edu)
None - (Holidays in United States)
None - (Classes)
None - (Holidays in China)
iCloud - (jasminexu7003@icloud.com)
None - (Blocks)
Celtics - (Boston Celtics 2023-24 Schedule)
Texas MBB - (Men's Basketball - texassports.com)
Texas Football - (Football - texassports.com)
None - (School)
Texas Volleyball - (Volleyball - texassports.com)
None - (Birthdays)
None - (Spurs games)
None - (Footy/Games)
None - (Premier League)
classes_id = "c_9e1933b0541f598e606644fe2c541bd6f2c4ea2fca3feb6d74c3bcd19db99c37@group.calendar.google.com"
classes_cal = calendar.get_calendar(classes_id)
classes_cal
<Calendar Classes - None>
games_id = "c_0fcb92d23570504e2fe52acee15877624bcda521f5eaaea0082862b1c1f2f608@group.calendar.google.com"
for event in calendar.get_events(calendar_id=games_id): 
    print(event)
2024-12-31 18:30:00-06:00 - 6 Penn State vs 3 Boise State (CFP - Fiesta Bowl)
2025-01-01 16:00:00-06:00 - 8 Ohio State vs 1 Oregon (CFP - Rose Bowl)
2025-01-01 19:45:00-06:00 - 7 Notre Dame vs 2 Georgia (CFP - Sugar Bowl)
2024-12-31 11:00:00-06:00 - 11 Alabama vs Michigan (ReliaQuest Bowl)
2024-12-31 14:00:00-06:00 - 15 South Carolina vs 20 Illinois (Cheez-It Citrus Bowl)
2025-01-02 18:30:00-06:00 - Duke vs 14 Ole Miss (TaxSlayer Gator Bowl)
for event in calendar.get_events(calendar_id="jasminexu@utexas.edu"): 
    print(event)
2025-02-16 17:30:00-06:00 - Catch Your Breath Concert
2025-04-26 19:30:00-05:00 - Linkin Park Concert (From Zero World Tour)
2024-12-13 - Winter Break!
2024-10-24 14:30:00-05:00 - Intergroup project
None - None
2024-12-31 - Gym closed
2025-01-01 - Gym closed
2025-01-10 20:00:00-06:00 - Bus to Austin
END = datetime(2024, 12, 31)
END
datetime.datetime(2024, 12, 31, 0, 0)
START = datetime(2024, 1, 1)
START
datetime.datetime(2024, 1, 1, 0, 0)
EVENTS = []
for event in calendar.get_events(calendar_id="jasminexu@utexas.edu", 
                                 time_min=START,
                                 time_max=END): 
    EVENTS.append(event)
for c in calendar.list_event_colors():
    print(c)
1
2
3
4
5
6
7
8
9
10
11
print(len(EVENTS))
EVENTS = [e for e in EVENTS if e.summary != None]
print(len(EVENTS))
847
820
for e in EVENTS:
    print(f"{e.summary}; Color {e.color_id}")
Winter Break; Color 4
Wisdom teeth extraction; Color 5
Consultation w/ Dr. Wiggins; Color 5
Lunch w/ family (inc. Jennifer); Color 3
Eye appt.; Color 5
Bus to Austin; Color None
Lockheed Martin AI/ML Internship - Panel Interview; Color None
Call Jiant; Color 3
Laundry; Color None
Regeneron Summer 2024 Intern Interview: Todd Southard & Jasmine Xu; Color None
Night out w/ Hannah and friends; Color 3
Call parents; Color 3
Virtual Interview for Kautex 2024 Intern - Data & Analytics; Color None
Gym w/ Hannah + Lauren; Color 1
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Dinner w/ Hannah; Color 3
Hannah's IM volleyball game; Color 3
Laundry; Color None
Frolicking w/ Hannah; Color 3
Dinner (Cabo Bob's?) w/ Hannah; Color 3
Gathering at Aley's w/ Hannah; Color 3
Hannah's IM soccer game; Color 3
Dinner w/ Hannah; Color 3
LM offer expires; Color None
Dinner w/ Hannah; Color 3
Dinner w/ Hannah; Color 3
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Gym w/ Hannah and Kenadi; Color 1
Dinner w/ Hannah; Color 3
The Grammy Awards (CBS); Color 9
Bus to Austin; Color None
Austin Public Library w/ Hannah and Sydney; Color 3
Study w/ Hannah and Sydney; Color 3
Lunch w/ Hannah and Sydney; Color 3
Dinner w/ Hannah; Color 3
Hannah's IM soccer game; Color 3
Retrieve water bottle; Color 3
Hannah's IM volleyball game; Color 3
TTPD release day (11pm); Color 9
Watch IM basketball; Color 3
Quick trip to Chick-fil-a; Color 3
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Gym w/ Hannah and Lauren; Color 1
Drug screening for Lockheed; Color 5
tayLyrics w/ Hannah!; Color 3
Bus to Houston; Color None
Dinner at Waipo's place; Color 3
CNY dinner at 爷爷奶奶's; Color 3
Dinner w/ Hannah; Color 3
Gym w/ Hannah; Color 1
Gym w/ Hannah and Kenadi; Color 1
Hannah's IM volleyball game; Color 3
Gym w/ Hannah ; Color 1
Give Alex his gift; Color 3
Nap; Color None
Dinner w/ Hannah; Color 3
tayLyrics w/ Hannah!; Color 3
Nap; Color None
Movie + card games at Sydney's; Color 3
Trip to HEB; Color None
Dinner w/ Hannah and Lauren; Color 3
Dinner w/ the girls!; Color 3
Ping pong w/ Hannah and Lauren; Color 3
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Volleyball w/ Hannah; Color 3
Dinner w/ Hannah; Color 3
Nap; Color None
Gym w/ Hannah; Color 1
tayLyrics w/ Hannah!; Color 3
Lockheed Martin EO InternReady Series - February; Color None
Nature time w/ Hannah; Color 3
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Hannah IM volleyball playoffs; Color 3
Texas THON Pancake Night; Color 3
Meet w/ Aley!; Color 3
Watch Hannah play volleyball; Color 3
Chick fil a w/ Hannah; Color 3
Trip to HEB w/ Hannah; Color 3
Chat w/ Hannah and Chang; Color 3
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Dinner w/ Hannah; Color 3
tayLyrics w/ Hannah!; Color 3
Dinner w/ Hannah; Color 3
Gym w/ Hannah; Color 1
Meet w/ Connor; Color None
Lunch w/ Hannah; Color 3
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Meet w/ Noah; Color None
Dinner w/ Hannah; Color 3
Movie w/ Hannah; Color 3
Tennis w/ Hannah, Sydney, Kenadi, and Lauren; Color 3
Jizza w/ Hannah and Lauren; Color 3
Saltburn w/ Hannah and Lauren; Color 3
Hannah's IM soccer playoffs; Color 3
Volleyball w/ Hannah; Color 3
Watch IM basketball; Color 3
Trip to Trader Joe’s; Color None
Dead Poet's Society (1/2) w/ Hannah; Color 3
Dead Poet's Society (2/2) w/ Hannah; Color 3
Dinner w/ Hannah; Color 3
Spring Break; Color 4
Lawn time w/ Hannah; Color 3
Dinner w/ Hannah; Color 3
Gym w/ Hannah and Kenadi; Color 1
Gym w/ Hannah and Kenadi; Color 1
tayLyrics w/ Hannah and Kenadi; Color 3
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Bus to Katy; Color None
Gym; Color 1
Lunch and shopping w/ 外婆; Color 3
Visit 爷爷奶奶 w/ Justin; Color 3
Birthday dinner w/ family; Color 3
Houston Rodeo x Jonas Brothers!; Color 2
Dinner w/ Hannah; Color 3
Bus to Austin; Color None
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Dinner w/ Hannah; Color 3
Visit Anjie; Color 3
Band pickup w/ Hannah and Sydney; Color None
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Volleyball w/ Hannah, Kenadi, and Lauren; Color 3
Band pickup ; Color None
Jester event w/ Hannah!; Color 3
Dinner w/ Hannah; Color 3
Gym w/ Hannah and Lauren; Color 1
Hang out w/ Hannah and Lauren; Color 3
West Fest w/ Hannah and Sydney; Color 2
West Fest (ZBT); Color 2
West Fest w/ Hannah and Sydney; Color 2
Cabo Bob's w/ Hannah, Sydney, Lauren, and Kenadi; Color 3
Maddie’s birthday party w/ Hannah; Color 3
Movie w/ Hannah and Lauren; Color 3
Trip to HEB; Color None
Total eclipse; Color None
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Gym w/ Hannah, Lauren, and Kenadi; Color 1
Dinner w/ Hannah; Color 3
Lockheed Martin EO InternReady Series - March; Color None
Lunch w/ Hannah; Color 3
Saxophone; Color None
Saxophone; Color None
Saxophone; Color None
Saxophone; Color None
Waterparks Concert!!; Color 2
Waterparks VIP; Color 2
Bus to Katy; Color None
Bus to Austin; Color None
Family lunch @ Katy Asian Town; Color 3
Mall w/ family; Color 3
Saxophone; Color None
Saxophone; Color None
Gym; Color 1
Gym w/ Kenadi and Lauren; Color 1
Saxophone; Color None
Party at Aley's; Color 3
Saxophone; Color None
Saxophone; Color None
Eclipse; Color 2
Hang out w/ Authencia, Hannah, Batyr, Priyansh; Color 3
Dinner w/ Hannah and Authencia; Color 3
Dinner w/ Hannah and Authencia; Color 3
Volleyball w/ Hannah and Authencia; Color 3
Volleyball w/ Hannah and Authencia; Color 3
Gym; Color 1
Volleyball w/ Authencia; Color 3
Lunch w/ Alex; Color 3
Lunch w/ Authencia; Color 3
Gym; Color 1
Hang out w/ Batyr, Authencia, and Hannah; Color 3
Lawn time; Color None
Dinner w/ Hannah and Lauren; Color 3
Jasement w/ Hannah and Lauren; Color 3
Meet w/ Aley w/ Hannah and Lauren; Color 3
The Proposal w/ Lauren; Color 3
Trip to Austin Asian Town; Color None
Minions: The Rise of Gru; Color None
Explore Austin; Color None
Hang out w/ Andrew; Color None
Gym; Color 1
Hang out w/ Andrew; Color None
Gym; Color 1
Hang out w/ Andrew; Color None
TTPD w/ Hannah and Andrew; Color 3
Hang out w/ Hannah and Kenadi; Color 3
Dinner w/ Hannah; Color 3
Lunch w/ Hannah; Color 3
Hang out w/ Andrew; Color None
Get Out w/ Hannah and Andrew; Color 3
Drive w/ Hannah, Kenadi, Lauren; Color 3
Gym w/ Hannah, Kenadi, and Lauren; Color 1
Lunch w/ Alex; Color 3
Gym; Color 1
Hang out w/ Andrew; Color None
Group FT; Color 3
Dinner w/ Hannah and Lauren; Color 3
Gym w/ Hannah; Color 1
Hang out w/ Andrew and Hannah + watch Us; Color 3
Moving out w/ Jiant; Color None
Women in Psych profit share; Color 3
Hang out w/ Andrew; Color None
Dinner w/ Hannah; Color 3
Volleyball w/ Hannah; Color 3
1st day of internship; Color 11
Meet w/ Hannah @ EER; Color 3
Walk to Cabo Bob's w/ Hannah and Andrew #2; Color 3
Hang out w/ Andrew; Color 3
ASBMB profit share w/ Hannah and Andrew; Color 3
Volleyball w/ Hannah and Andrew; Color 3
Gym w/ Hannah (and Andrew); Color 1
Hang out w/ Hannah and Andrew; Color 3
Lunch w/ Hannah, Lauren, and Nick; Color 3
HEB w/ Andrew; Color 3
Hang out w/ Andrew (+ watch Smile); Color 3
Hang out w/ Hannah and Lauren; Color 3
Dinner w/ Hannah and Lauren; Color 3
Volleyball w/ Hannah and Lauren; Color 3
Hang out w/ Andrew; Color 3
Ochem review session w/ Lauren and Hannah (+ worked on Linguistics report); Color 3
Dinner w/ Hannah and Lauren; Color 3
Hang out w/ Andrew; Color 3
Gym w/ Hannah (and Andrew); Color 1
Breakfast w/ Hannah; Color 3
Gym; Color 1
Sonic run w/ Hannah and Lauren; Color 3
Hang out w/ Hannah and Lauren; Color 3
Movie night (Split) w/ Hannah, Lauren, and Andrew; Color 3
Hannah and Jasmine time; Color 3
Move out w/ Jiant; Color None
Dinner w/ Jiant and Hannah; Color 3
Appointment; Color 5
Saxophone; Color None
Shopping; Color None
Facetime Andrew; Color 3
Gym (push day); Color 1
HEB run; Color None
Figure out Dallas trip; Color None
Gym (leg day); Color 1
Saxophone; Color None
Gym (back and bi); Color 1
Appointment; Color 5
Katy Mills w/ Anjie; Color 3
Shopping; Color None
Facetime Andrew; Color 3
Visit Hannah in Dallas!!; Color 3
Aquarium; Color None
Six Flags; Color None
Saxophone; Color None
Shopping; Color None
Gym (push day); Color 1
Mother's Day dinner w/ family; Color 3
Gathering at Anagaby’s w/ Hannah; Color 3
Dinner w Hannah and her family!; Color 3
Bus to Dallas; Color None
Bus to Houston; Color None
Aquarium w/ Hannah; Color 3
Apartment shopping w/ Hannah; Color 3
Six Flags attempt; Color 3
Gym (push day); Color 1
Gym (leg day); Color 1
Gym (back and bi); Color 1
Dinner; Color None
Flight to El Calafate; Color None
Dinner and Tango show; Color None
Brunch at Cafe Tortoni; Color None
Flight to Buenos Aires; Color None
Flight from Buenos Aires to Houston; Color None
New Employee Orientation (NEO); Color 11
Call Mike to set up laptop; Color 11
Onboarding tasks; Color 11
Mommy's birthday dinner; Color 3
La Recoleta Cemetery; Color None
Admire street art; Color None
Dinner @ border of 3 countries; Color None
Argentina trip!; Color None
Iguazu National Park; Color None
Buenos Aires, Argentina; Color None
El Calafate, Argentina; Color None
Iguazu, Argentina; Color None
Buenos Aires, Argentina; Color None
Glacier cruise; Color None
Sick day; Color None
Bus to Puerto Natales; Color None
Torres del Paine Drive; Color None
Torres del Paine hike; Color None
Bus to El Calafate; Color None
Puerto Natales, Chile; Color None
El Calafate, Argentina; Color None
Walk in Iguazu city center; Color None
Dinner w/ family, 外婆外公, Flora; Color 3
Deliver wontons to Waipo + HEB trip; Color 3
Deliver chicken to 外婆; Color 3
Welcome to the AI Consulting Team!; Color 11
Orientation cont. (Q&A); Color 11
1 on 1 w/ Bruno; Color 11
Visit Waipo to fill out I-9 sec. 2; Color 3
AI Consulting Overview & Onboarding; Color 11
1 on 1 w/ Bruno; Color 11
Team Skills, Project Need; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
HEB run; Color None
Gym (leg day); Color 1
Dinner w/ family, Liang, Logan, Luke; Color 3
Gym (back and bi) ; Color 1
Alex weekend; Color 3
Lunch w/ grandparents, Liang, Logan, Luke; Color 3
Typhoon Texas w/ Liang, Logan, Luke; Color 3
Gym (leg day); Color 1
HEB run; Color None
1-on-1 w/ Bruno; Color 11
Gym (back and bi); Color 1
Presidential debate; Color 9
Gym (back and bi); Color 1
Logan and Luke weekend; Color 3
FaceTime Hannah; Color 3
FaceTime Alex; Color 3
Gym (back and bi); Color 1
1-on-1 w/ Bruno; Color 11
SKLZ Catch-up; Color 11
PAID HOLIDAY; Color 11
Gym (leg day); Color 1
Meet w/ Aaron (Aero GSC intro); Color 11
Gym (back and bi); Color 1
Hang out at 爷爷奶奶's; Color 3
Chenlu's birthday lunch; Color 3
Alex arrives; Color 3
Hang out w/ Alex; Color 3
Lunch ish w/ Alex; Color 3
Trader Joe's run; Color None
Drop Alex off; Color 3
Poker w/ Jiant, Justin, Alex; Color 3
Dinner w/ Alex; Color 3
Andretti w/ Alex; Color 3
Dessert & Kinokuniya w/ Alex; Color 3
Lunch w/ Alex; Color 3
AI Consulting/Aimlabs Weekly Demo - James Wells/Tako Mutnik: Command Media Mapping; Color 11
AI Consulting/Aimlabs Weekly Demo - Travis Jefferies: CMM2CM; Color 11
AI Consulting/Aimlabs Weekly Demo - Frank Phillips: Fine-Tuning as a Service (FTaaS); Color 11
Power outage - Beryl; Color None
Family poker; Color 3
Family poker; Color 3
Dinner at 外婆外公's; Color 3
Read; Color None
Gym (back and bi); Color 1
Aero GSC intro; Color 11
AI Consulting Bi-Weekly Team Mtg; Color 11
AI Consulting Bi-Weekly Team Mtg; Color 11
AI Consulting Bi-Weekly Team Mtg; Color 11
Gym (leg day); Color 1
Gym (back and bi); Color 1
Gym (back and bi); Color 1
Meet w/ Tyler (impromptu); Color 11
Gym (leg day); Color 1
Dental appt.; Color 5
Foundations All Hands; Color 11
Gym (back and bi); Color 1
tayLyrics w/ Hannah!; Color 3
Lunch + shopping w/ 外婆; Color 3
Family poker; Color 3
Inside Out 2; Color 9
tayLyrics w/ Hannah; Color 3
Get C-130 data; Color 11
Gym (back and bi); Color 1
Meet w/ Issac w/ Tyler; Color 11
1-on-1 w/ Bruno; Color 11
Meet w/ Tyler (impromptu); Color 11
Flight to Houston (UA 1932); Color None
Flight to Seattle (UA 2606); Color None
Aero overview w/ Aaron and Travis; Color 11
Gym (leg day); Color 1
tayLyrics; Color 8
tayLyrics; Color 8
Meet w/ Aaron; Color 11
Farewell Bruno; Color 11
LAST DAY; Color 11
Home; Color None
Home; Color None
Home; Color None
Home; Color None
Home; Color None
Gym (back and bi); Color 1
tayLyrics; Color 8
Dumbo appt.; Color 5
tayLyrics; Color 8
tayLyrics (added leaderboard); Color 8
tayLyrics; Color 8
tayLyrics; Color 8
tayLyrics deployment; Color 8
Dinner w/ Jiant and Justin; Color 3
Gym (back and bi); Color 1
HEB run; Color None
tayLyrics; Color 8
tayLyrics (restructuring); Color 8
Aero GSC tag up; Color 11
Meet w/ Daria and Lance w/ Tyler; Color 11
Gym (leg day); Color 1
tayLyrics (restructuring cont.); Color 8
tayLyrics - completed restructuring, redeployed; Color 8
tayLyrics - bug fixes and playing; Color 8
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
Meet w/ Tyler; Color 11
2024 Intern Offboarding; Color 11
Gym (back and bi); Color 1
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
TODO; Color 11
internship_database - starting up; Color 8
internship_database; Color 8
internship_database; Color 8
internship_database; Color 8
internship_database; Color 8
internship_database; Color 8
Visit Rebecca and cats!; Color None
HEB run; Color None
internship_database - implementing settings; Color 8
internship_database; Color 8
Aero GSC tag-up; Color 11
Aero GSC tag-up; Color 11
Aero GSC tag-up; Color 11
MOVE-IN; Color None
Gym (back and bi); Color 1
lyriguessr - radiohead; Color 8
Aero GSC tag-up; Color 11
UTCS + MLDS Sync; Color None
Gym (leg day); Color 1
lyriguessr - started up pipeline; Color 8
lyriguessr - lyric pull class (messy ver.) done; Color 8
lyriguessr - played around w quarto and github pages; Color 8
Paper Club; Color 11
lyricguessr - misc.; Color 8
Performance eval. w/ Bruno; Color 11
lyriguessr; Color 8
Aero GSC tag-up; Color 11
1-on-1 w/ Lance; Color 11
Gym (back and bi); Color 1
TMI (Tools, Methods, Implementation); Color 11
END OF INTERNSHIP PRESENTATION w/ TYLER; Color 11
tayLyrics & lyriguessr; Color 8
lyriguessr; Color 8
lyriguessr - website; Color 8
posit::conf 2024; Color 2
Chat w/ Cathy and family; Color None
Lunch w/ Cathy and family; Color 3
Shopping; Color None
lyriguessr - deployed waterparksGuessr; Color 8
Lyft to Airport; Color None
Opp. Scholar Lunch ; Color 2
Welcome Reception; Color 2
Demo: Posit Connect Cloud; Color 2
Keynote Session: Updates from Posit; Color 2
Navigating A Career In Data Science; Color 2
Networking Lunch; Color 2
Making Decisions with Data; Color 2
Innovating with Shiny; Color 2
Keynote Session: Practical Tips for using Generative AI in Data Science Workflows | Melissa Van Bussel; Color 2
conf::carnival; Color 2
Keynote Session: A future of data science | Allen Downey; Color 2
Data Engineering; Color 2
Networking Lunch; Color 2
Lunch and Learn hosted by ProCogia | Using GenAI in a Multilingual Environment; Color 2
Demo: Collaboration between R & Python with Pins; Color 2
Data Science Case Studies; Color 2
It's R And Python, Not R Or Python; Color 2
Level Up Your Data Science Skills; Color 2
tidyverse Team Meetup; Color 2
Data Visualizations: Idea > Process > Sharing; Color 2
This Session Was Not Generated By AI; Color 2
Keynote Session: Data Wrangling [for Python or R] Like a Boss With DuckDB | Hannes Mühleisen; Color 2
Demo: Positron Talk Extended Q&A; Color 2
Seattle Art Museum; Color None
posit::conf check-in; Color None
Databases with R; Color 2
Check in; Color None
AI Consulting/Aimlabs Weekly Demo - Placeholder; Color 11
AI Consulting/Aimlabs Weekly Demo - Alan Wang: Nvidia Modulus White Paper; Color 11
Gym (back and bi?); Color 1
Get poke; Color None
Get pizza; Color None
Machine Learning And Statistical Modeling; Color 2
Demo: Automate your reporting with Quarto dashboards and Posit Connect; Color 2
Quarto Team Meetup; Color 2
Beautiful And Effective Tables; Color 2
Automated Reporting With Quarto: Beyond Copy And Paste; Color 2
lyriguessr - website customization; Color 8
Stay at Hyatt Regency Seattle; Color None
What's New with Shiny?; Color 2
Birds of a Feather; Color 2
Pour Some Glitter On It: Custom Quarto Outputs; Color 2
lyriguessr - properly implemented lyric counts; Color 8
lyriguessr - UI fixes; Color 8
Packing; Color None
lyriguessr - logo; Color 8
Drive to Austin; Color None
Lunch w/ parents; Color 3
Dinner w/ Hannah and family; Color 3
Shopping w/ mom, Hannah, and Laura; Color None
Shopping w/ Hannah and Laura; Color None
Dinner w/ Hannah; Color 3
tayLyrics w/ Hannah!; Color 3
Shopping w/ Hannah; Color None
Hang out w Hannah, Lauren, and Sydney; Color 3
Inspection form w Hannah; Color None
Kenadi’s birthday dinner; Color 3
Board games w Hannah, Lauren, and Kenadi; Color 3
Coffee shop w Hannah, Sydney, and Lauren; Color 3
Dinner w/ Hannah; Color 3
Shopping w/ Hannah; Color None
Board games w Hannah, Lauren, and Kenadi; Color 3
Thanksgiving Break; Color None
AI Consulting/Aimlabs Weekly Demo - Placeholder; Color 11
Dinner w/ Hannah; Color 3
tayLyrics hosting; Color 8
Stroll around campus; Color None
Jasmine/Jessy; Color None
Attempt to reserve MLDS room; Color None
Gym (back and bi); Color 1
The Standard renewals open; Color None
Games w/ Kenadi, Lauren, Hannah, Sydney; Color 3
Pick up container for Lauren; Color None
Gym (leg day); Color 1
Shopping w/ Hannah; Color None
Dinner w/ Hannah; Color 3
Get interviewed by Hannah; Color 3
Gym (back and bi); Color 1
Canon's apartment party; Color 3
lyriguessr - modularization, AWS; Color 8
lyriguessr - finally got AWS stuff done!; Color 8
lyriguessr - misc. dev; Color 8
a lil stroll; Color None
lyriguessr - misc.; Color 8
lyriguessr - website; Color 8
Gym (back and bi); Color 1
lyriguessr - misc. site stuff; Color 8
Gym (leg day); Color 1
lyrigetter - added lana + misc.; Color 8
Lauren's birthday dinner; Color 3
Gym (back and bi); Color 1
99 Ranch run; Color None
Gym (back and bi); Color 1
lyriguessr - bad omens AWS, clairo game; Color 8
lyriguessr - instances, website puns; Color 8
lyriguessr promo; Color 8
Gym (leg day); Color 1
Gym (back and bi); Color 1
tayLyrics promo; Color 8
tayLyrics promo; Color 8
ADPi Tex-Mex Lunch w/ Hannah, Anthony, Sydney, Elsa; Color 3
Gym (fuck around day); Color 1
lyriguessr / tayLyrics - analytics and logs; Color 8
lyriguessr - log analytics; Color 8
Katy Trip w/ Hannah; Color 3
Six Flags w/ Hannah; Color 3
Stroll + Trader Joe's run; Color None
lyriguessr - acceptable answers; Color 8
Gym (back and bi); Color 1
lyriguessr - TZ modification, etc.; Color 8
Gym (leg day); Color 1
lyriguessr - deployed Sabrina's game, other AWS things, etc.; Color 8
Shopping w/ Hannah; Color None
Gym (back and bi!!); Color 1
Gym (fuck around day); Color 1
Costco run w/ Hannah; Color None
Hang out w/ Calvin; Color None
Gym (back and bi); Color 1
lyriguessr - AWS stuff, scraping FOB, etc.; Color 8
Gym (leg day); Color 1
Gym (back and bi!); Color 1
ADPi Tex-Mex Lunch w/ Hannah and Anthony; Color 3
Hang out w/ Kyler; Color None
MLL Matching Event + MLDS; Color None
Gym (back and bi); Color 1
Gym (leg day); Color 1
Gym (fuck around day); Color 1
misc. developing; Color 8
Gym (back and bi); Color 1
Drive to Katy w/ Hannah; Color None
Lunch w/ family and Hannah; Color 3
Asian town w/ Hannah; Color 3
Drive to Austin w/ Hannah; Color None
Chat w/ Garrick (Apple); Color 6
Visit Rebecca & cats w/ mommy, Justin, Hannah; Color 3
Compatibility w/ family and Hannah; Color 3
Pickleball w/ Jiant, Justin, Hannah; Color 3
Make dumplings and wontons w/ mommy and Hannah; Color 3
MLDS <> NVIDIA Student Network; Color None
Jasmine Xu and nicole.mcqueen@drivetime.com; Color 6
Gym (back and bi); Color 1
Gym (fuck around day); Color 1
Gym (leg day) w/ Hannah; Color 1
Gym (back and bi); Color 1
Gym (fuck around day II); Color 1
Drive to Austin w/ Hannah; Color None
Six Flags w/ Hannah!; Color 3
Drive to San Antonio w/ Hannah; Color None
journal_analyzer - frequency table WC & streamlit wordcloud package; Color 8
Online shopping...😅; Color None
Gym (back and bi); Color 1
BISH meetup w/ Hannah; Color 3
journal_analyzer - text extraction pipeline; Color 8
journal_analyzer misc. stuff; Color 8
Gym (fuck around day); Color 1
Hang out w Alex; Color 3
100th gym day🥳! (leg day); Color 1
Hang out w Alex; Color 3
Gym (back and bi); Color 1
favoritesGuessr - game done!; Color 8
Gym (fuck around day II); Color 1
SDS Party; Color 3
Get into stadium & wait for game...w/ Hannah, Sydney, Kenadi, Elsa, Lauren; Color None
HEB run; Color None
Gym (back and bi); Color 1
Gym (leg day); Color 1
Hang out w/ Alex; Color 3
Gym (fuck around day); Color 1
Apple ADSP interview; Color 6
Intergroup project; Color None
Intergroup project; Color None
Intergroup project; Color None
Intergroup project; Color None
Intergroup project; Color None
Intergroup project; Color None
Intergroup project; Color None
Gym (back and bi); Color 1
Hang out w Authencia, Hannah, Batyr, Emma, Alex; Color 3
Halloween Party @ Aley's; Color 3
Halloweekend night out w/ Hannah, Sydney, Elsa, Jenny, Kaitlyn; Color 3
Authencia visit!; Color 3
PCL Booking; Color None
encyclopedia - intial setup and ideabank; Color 8
Meta Data Science Intern Interview; Color 6
Gym (back and bi); Color 1
Hang out w Alex; Color 3
Target run; Color None
Apple ADSP 2nd round interview (behavioural) w/ Ashley and Audra; Color 6
PCL booking; Color None
PCL booking; Color None
PCL booking; Color None
Gym (leg day); Color 1
Gym (push and abs); Color 1
Vote; Color None
Apple ADSP 3rd round interview (technical) w/ Krittika and Vivian; Color 6
Gym (back and bi); Color 1
Integra Data Assessment; Color 6
Hang out w/ Alex; Color 3
Sonic w/ Hannah and Lauren; Color 3
Texas Ice Hockey vs A&M w/ Hannah and Lauren; Color 3
Hang out w/ Justin, Justin's friends, and Marisa; Color 3
Hang out w/ Alex; Color 3
Gym (back and bi); Color 1
Gym (leg day); Color 1
Hannah's IM volleyball game; Color 3
Gym (push and abs); Color 1
Gym (back and bi); Color 1
Sal Khan Live at UT: How AI Will Save Education; Color 2
Watch Gone Girl (2014); Color 9
Gym (fuck around day); Color 1
Gym (back and bi); Color 1
Target run; Color None
Gym (leg day); Color 1
Gym (push and abs); Color 1
From Classrooms to College Sports; Color 2
Shopping w/ Hannah; Color 3
Dinner w Hannah; Color 3
Pancake Night @ Pike w/ Hannah, Sydney, Lauren, Abby; Color 3
Gym (back and bi); Color 1
Hang out w/ Marisa; Color 3
Bus to Katy; Color None
Gym (back and bi); Color 1
Llama Impact Hackathon: Austin; Color None
Gym (leg day); Color 1
University Orchestra Concert w/ Anjie :); Color 3
Super Mario w/ Hannah :))); Color 3
Gym (push and abs); Color 1
Super Mario w/ Hannah; Color 3
Gym (back and bi); Color 1
AITX Monthly Meetup + Llama Impact Hackathon Reception; Color None
Bus w/ Anjie; Color None
Breakfast, Team Formation; Color 2
Welcome Kickoff; Color 2
Partner workshops; Color 2
Hacking starts; Color None
Doors open & breakfast; Color 2
Submissions due; Color 2
First round judging; Color 2
Lunch; Color 2
Dinner; Color 2
Lunch; Color 2
Developing??; Color None
Final round judging; Color 2
Keynote; Color 2
Winners announced; Color 2
Gym (back and bi); Color 1
Facetime Alex; Color 3
Gym (leg day); Color 1
Lunch + shopping w/ 外婆 and Justin; Color 3
Thanksgiving w/ family; Color 3
Family mahjong; Color 3
Shopping w/ mommy; Color 3
Gladiator 2 w/ Jiant and Justin; Color 9
Lunch w/ Jiant and Justin; Color 3
Drive to Austin; Color None
Winter Break!; Color None
Parking; Color None
Target run w/ Anjie, Olivia; Color 3
Gym (back and bi); Color 1
Costco + HEB run w/ Hannah, Anthony; Color None
soniverse - grabbing my own top artists as sample data; Color 8
soniverse - started new project!; Color 8
soniverse - sample data. PROJECT NOW ON HIATUS; Color 8
spotify dashboard - started new project; built simple st app w user auth; Color 8
Gym w/ Anjie; Color 3
Gym (leg day); Color 1
Spotify dashboard (whilst running feature_generator for research); Color 8
Gym (push and abs); Color 1
spotify dashboard; Color 8
Gym (back and bi); Color 1
Spotify dashboard; Color 8
Hang out w/ Alex; Color 3
Watch The Girl with the Dragon Tattoo; Color 9
(Christmas) Shopping; Color None
Gym (back and bi); Color 1
Gym (leg day); Color 1
"Study" w/ Alex; Color 3
Dashboard - playing w lastfm API; Color 8
Gym (push and abs); Color 1
Dashboard - lastfm API, this week's top tracks; Color 8
Gift shopping; Color None
Gym (back and bi); Color 1
Drive to Katy; Color None
Dinner gathering w/ grandparents; Color 3
Family photos; Color 3
Dashboard; Color 8
Dashboard - top tracks implementation; Color 8
Dashboard - lasfm recently listened; Color 8
Gift shopping w/ Justin; Color 3
Dashboard; Color 8
Gym (back and bi); Color 1
HEB run; Color None
Gym closed; Color 1
Gym closed; Color 1
Gym (leg day); Color 1
Gym (push and abs); Color 1
Intergroup project; Color None
Intergroup project; Color None
Gym (back and bi); Color 1
Lockheed Martin EO InternReady Series - April ; Color None
Family mahjong; Color 3
Board game night w/ Hannah, Lauren, Kenadi, Sydney, Dylan; Color 3
Drive to Katy; Color None
Visit Waterloo Records; Color None
gcal_wrapped - intro & playing w API; Color 8
Gym (back and bi); Color 1
gcal_wrapped - figured out basic authentication using gcsa; Color 8
Family Christmas Gathering; Color 3
Gift opening w/ family; Color 3
Board game (Spy Alley) w/ family; Color 3
Squid Game S2 (eps. 1-4) w/ Jiant and Mommy; Color 9
gcal_wrapped; Color 8
Gym (push and abs); Color 1
Dinner w/ Yanzi + family; Color 3
Squid Game S2 (finished) w/ Jiant and Mommy; Color 9
Lunch w/ Yinin's family; Color 3
Gym (leg day); Color 1
Volleyball w/ Hannah; Color 3
Volleyball; Color 3
Volleyball w/ Hannah + Lauren; Color 3
Volleyball w/ Hannah; Color 3
gcal_wrapped; Color 8
Gym (back and bi); Color 1

9 unique color labels in use, incl. default. 2 out of use (4, 7)

  • Gym = 1
  • Default = None
  • Family/Friends = 3
  • developing = 8
  • Entertainment = 9
  • Appointments = 5
  • Event = 2
  • Work = 11
  • Recruitment = 6
# surprisingly there is no way to get label names via the calendar API,
# so I have to correspond them manually
LABEL_MAP = {
    "1": "Gym",
    "2": "Event",
    "3": "Family/Friends",
    "4": None,
    "5": "Appointments",
    "6": "Recruitment",
    "7": None,
    "8": "Developing", 
    "9": "Entertainment", 
    "10": None,
    "11": "Work",
    None: "Default"
}
LABEL_MAP
{'1': 'Gym',
 '2': 'Event',
 '3': 'Family/Friends',
 '4': None,
 '5': 'Appointments',
 '6': 'Recruitment',
 '7': None,
 '8': 'Developing',
 '9': 'Entertainment',
 '10': None,
 '11': 'Work',
 None: 'Default'}
[e for e in EVENTS if e.color_id == "4"]
[<Event 2023-12-12 - Winter Break>, <Event 2024-03-09 - Spring Break>]
[e for e in EVENTS if e.color_id == "10"]
[]
event
<Event 2024-12-30 19:45:00-06:00 - Gym (back and bi)>
event.start, event.end
(datetime.datetime(2024, 12, 30, 19, 45, tzinfo=tzoffset(None, -21600)),
 datetime.datetime(2024, 12, 30, 21, 30, tzinfo=tzoffset(None, -21600)))
(event.end - event.start).seconds / 3600
1.75
event.location
'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'
EVENTS
[<Event 2023-12-12 - Winter Break>,
 <Event 2024-01-11 08:00:00-06:00 - Wisdom teeth extraction>,
 <Event 2024-01-09 15:00:00-06:00 - Consultation w/ Dr. Wiggins>,
 <Event 2024-01-04 13:00:00-06:00 - Lunch w/ family (inc. Jennifer)>,
 <Event 2024-01-06 12:00:00-06:00 - Eye appt.>,
 <Event 2024-01-15 15:30:00-06:00 - Bus to Austin>,
 <Event 2024-01-24 13:00:00-06:00 - Lockheed Martin AI/ML Internship - Panel Interview>,
 <Event 2024-01-17 20:00:00-06:00 - Call Jiant>,
 <Event 2024-01-19 11:15:00-06:00 - Laundry>,
 <Event 2024-01-22 14:00:00-06:00 - Regeneron Summer 2024 Intern Interview: Todd Southard & Jasmine Xu>,
 <Event 2024-01-19 21:30:00-06:00 - Night out w/ Hannah and friends>,
 <Event 2024-01-21 21:15:00-06:00 - Call parents>,
 <Event 2024-01-23 08:00:00-06:00 - Virtual Interview for Kautex 2024 Intern - Data & Analytics>,
 <Event 2024-01-17 21:15:00-06:00 - Gym w/ Hannah + Lauren>,
 <Event 2024-01-23 20:00:00-06:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-01-24 21:00:00-06:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-01-25 19:30:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-01-25 22:00:00-06:00 - Hannah's IM volleyball game>,
 <Event 2024-01-26 11:00:00-06:00 - Laundry>,
 <Event 2024-01-27 12:45:00-06:00 - Frolicking w/ Hannah>,
 <Event 2024-01-27 18:45:00-06:00 - Dinner (Cabo Bob's?) w/ Hannah>,
 <Event 2024-01-27 20:00:00-06:00 - Gathering at Aley's w/ Hannah>,
 <Event 2024-01-28 18:30:00-06:00 - Hannah's IM soccer game>,
 <Event 2024-01-29 19:45:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-04 - LM offer expires>,
 <Event 2024-01-31 20:00:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-01 19:00:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-01-29 21:15:00-06:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-01-31 21:00:00-06:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-02-01 20:00:00-06:00 - Gym w/ Hannah and Kenadi>,
 <Event 2024-02-02 19:30:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-04 19:00:00-06:00 - The Grammy Awards (CBS)>,
 <Event 2024-02-11 14:00:00-06:00 - Bus to Austin>,
 <Event 2024-02-03 11:00:00-06:00 - Austin Public Library w/ Hannah and Sydney>,
 <Event 2024-02-03 16:00:00-06:00 - Study w/ Hannah and Sydney>,
 <Event 2024-02-03 14:45:00-06:00 - Lunch w/ Hannah and Sydney>,
 <Event 2024-02-04 17:45:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-04 18:15:00-06:00 - Hannah's IM soccer game>,
 <Event 2024-02-04 20:30:00-06:00 - Retrieve water bottle>,
 <Event 2024-02-08 22:00:00-06:00 - Hannah's IM volleyball game>,
 <Event 2024-04-18 - TTPD release day (11pm)>,
 <Event 2024-02-05 23:00:00-06:00 - Watch IM basketball>,
 <Event 2024-02-06 22:15:00-06:00 - Quick trip to Chick-fil-a>,
 <Event 2024-02-06 20:30:00-06:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-02-07 21:00:00-06:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-02-05 21:15:00-06:00 - Gym w/ Hannah and Lauren>,
 <Event 2024-02-07 15:00:00-06:00 - Drug screening for Lockheed>,
 <Event 2024-02-07 23:00:00-06:00 - tayLyrics w/ Hannah!>,
 <Event 2024-02-09 14:00:00-06:00 - Bus to Houston>,
 <Event 2024-02-09 18:45:00-06:00 - Dinner at Waipo's place>,
 <Event 2024-02-10 18:00:00-06:00 - CNY dinner at 爷爷奶奶's>,
 <Event 2024-02-12 20:05:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-12 21:30:00-06:00 - Gym w/ Hannah>,
 <Event 2024-02-13 20:30:00-06:00 - Gym w/ Hannah and Kenadi>,
 <Event 2024-02-15 22:00:00-06:00 - Hannah's IM volleyball game>,
 <Event 2024-02-14 20:00:00-06:00 - Gym w/ Hannah >,
 <Event 2024-02-14 22:30:00-06:00 - Give Alex his gift>,
 <Event 2024-02-15 14:45:00-06:00 - Nap>,
 <Event 2024-02-15 19:30:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-15 00:45:00-06:00 - tayLyrics w/ Hannah!>,
 <Event 2024-02-16 14:45:00-06:00 - Nap>,
 <Event 2024-02-17 20:00:00-06:00 - Movie + card games at Sydney's>,
 <Event 2024-02-18 15:00:00-06:00 - Trip to HEB>,
 <Event 2024-02-18 18:15:00-06:00 - Dinner w/ Hannah and Lauren>,
 <Event 2024-02-17 18:30:00-06:00 - Dinner w/ the girls!>,
 <Event 2024-02-18 22:00:00-06:00 - Ping pong w/ Hannah and Lauren>,
 <Event 2024-02-19 21:45:00-06:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-02-19 23:15:00-06:00 - Volleyball w/ Hannah>,
 <Event 2024-02-19 20:00:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-19 18:45:00-06:00 - Nap>,
 <Event 2024-02-20 20:15:00-06:00 - Gym w/ Hannah>,
 <Event 2024-02-20 22:00:00-06:00 - tayLyrics w/ Hannah!>,
 <Event 2024-02-26 17:00:00-06:00 - Lockheed Martin EO InternReady Series - February>,
 <Event 2024-02-21 17:00:00-06:00 - Nature time w/ Hannah>,
 <Event 2024-02-21 21:00:00-06:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-02-22 20:00:00-06:00 - Hannah IM volleyball playoffs>,
 <Event 2024-02-22 22:00:00-06:00 - Texas THON Pancake Night>,
 <Event 2024-02-23 17:00:00-06:00 - Meet w/ Aley!>,
 <Event 2024-02-23 18:15:00-06:00 - Watch Hannah play volleyball>,
 <Event 2024-02-23 22:45:00-06:00 - Chick fil a w/ Hannah>,
 <Event 2024-02-24 19:00:00-06:00 - Trip to HEB w/ Hannah>,
 <Event 2024-02-24 00:00:00-06:00 - Chat w/ Hannah and Chang>,
 <Event 2024-02-26 21:15:00-06:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-02-26 19:30:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-26 23:00:00-06:00 - tayLyrics w/ Hannah!>,
 <Event 2024-02-27 19:30:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-27 20:30:00-06:00 - Gym w/ Hannah>,
 <Event 2024-02-28 16:00:00-06:00 - Meet w/ Connor>,
 <Event 2024-02-29 14:00:00-06:00 - Lunch w/ Hannah>,
 <Event 2024-02-28 14:00:00-06:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-02-29 17:10:00-06:00 - Meet w/ Noah>,
 <Event 2024-02-29 19:15:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-02-29 21:00:00-06:00 - Movie w/ Hannah>,
 <Event 2024-03-01 19:00:00-06:00 - Tennis w/ Hannah, Sydney, Kenadi, and Lauren>,
 <Event 2024-03-01 22:15:00-06:00 - Jizza w/ Hannah and Lauren>,
 <Event 2024-03-01 22:45:00-06:00 - Saltburn w/ Hannah and Lauren>,
 <Event 2024-03-03 20:00:00-06:00 - Hannah's IM soccer playoffs>,
 <Event 2024-03-03 18:00:00-06:00 - Volleyball w/ Hannah>,
 <Event 2024-03-03 17:15:00-06:00 - Watch IM basketball>,
 <Event 2024-03-03 15:30:00-06:00 - Trip to Trader Joe’s>,
 <Event 2024-02-24 22:30:00-06:00 - Dead Poet's Society (1/2) w/ Hannah>,
 <Event 2024-03-03 23:15:00-06:00 - Dead Poet's Society (2/2) w/ Hannah>,
 <Event 2024-03-03 18:45:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-03-09 - Spring Break>,
 <Event 2024-03-06 17:15:00-06:00 - Lawn time w/ Hannah>,
 <Event 2024-03-06 18:45:00-06:00 - Dinner w/ Hannah>,
 <Event 2024-03-06 20:30:00-06:00 - Gym w/ Hannah and Kenadi>,
 <Event 2024-03-07 20:00:00-06:00 - Gym w/ Hannah and Kenadi>,
 <Event 2024-03-07 23:45:00-06:00 - tayLyrics w/ Hannah and Kenadi>,
 <Event 2024-03-04 21:30:00-06:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-03-08 11:30:00-06:00 - Bus to Katy>,
 <Event 2024-03-13 16:00:00-05:00 - Gym>,
 <Event 2024-03-14 12:00:00-05:00 - Lunch and shopping w/ 外婆>,
 <Event 2024-03-12 14:00:00-05:00 - Visit 爷爷奶奶 w/ Justin>,
 <Event 2024-03-16 16:30:00-05:00 - Birthday dinner w/ family>,
 <Event 2024-03-15 17:00:00-05:00 - Houston Rodeo x Jonas Brothers!>,
 <Event 2024-03-17 19:30:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-03-17 13:30:00-05:00 - Bus to Austin>,
 <Event 2024-03-18 21:30:00-05:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-03-18 20:00:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-03-18 18:30:00-05:00 - Visit Anjie>,
 <Event 2024-03-19 15:00:00-05:00 - Band pickup w/ Hannah and Sydney>,
 <Event 2024-03-19 21:30:00-05:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-03-19 20:30:00-05:00 - Volleyball w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-03-20 13:00:00-05:00 - Band pickup >,
 <Event 2024-03-20 21:00:00-05:00 - Jester event w/ Hannah!>,
 <Event 2024-03-20 20:15:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-03-21 21:00:00-05:00 - Gym w/ Hannah and Lauren>,
 <Event 2024-03-21 22:30:00-05:00 - Hang out w/ Hannah and Lauren>,
 <Event 2024-03-22 21:00:00-05:00 - West Fest w/ Hannah and Sydney>,
 <Event 2024-03-23 15:00:00-05:00 - West Fest (ZBT)>,
 <Event 2024-03-23 22:00:00-05:00 - West Fest w/ Hannah and Sydney>,
 <Event 2024-03-23 17:45:00-05:00 - Cabo Bob's w/ Hannah, Sydney, Lauren, and Kenadi>,
 <Event 2024-03-23 19:45:00-05:00 - Maddie’s birthday party w/ Hannah>,
 <Event 2024-03-24 22:30:00-05:00 - Movie w/ Hannah and Lauren>,
 <Event 2024-03-24 16:45:00-05:00 - Trip to HEB>,
 <Event 2024-04-08 - Total eclipse>,
 <Event 2024-03-25 21:45:00-05:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-03-26 20:00:00-05:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-03-27 19:00:00-05:00 - Gym w/ Hannah, Lauren, and Kenadi>,
 <Event 2024-03-27 18:00:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-03-27 17:00:00-05:00 - Lockheed Martin EO InternReady Series - March>,
 <Event 2024-03-28 14:30:00-05:00 - Lunch w/ Hannah>,
 <Event 2024-03-28 23:00:00-05:00 - Saxophone>,
 <Event 2024-03-29 15:30:00-05:00 - Saxophone>,
 <Event 2024-03-28 18:55:00-05:00 - Saxophone>,
 <Event 2024-03-29 20:15:00-05:00 - Saxophone>,
 <Event 2024-03-30 18:00:00-05:00 - Waterparks Concert!!>,
 <Event 2024-03-30 16:30:00-05:00 - Waterparks VIP>,
 <Event 2024-03-30 11:30:00-05:00 - Bus to Katy>,
 <Event 2024-03-31 14:00:00-05:00 - Bus to Austin>,
 <Event 2024-03-31 12:00:00-05:00 - Family lunch @ Katy Asian Town>,
 <Event 2024-03-31 13:00:00-05:00 - Mall w/ family>,
 <Event 2024-04-01 17:00:00-05:00 - Saxophone>,
 <Event 2024-04-02 18:00:00-05:00 - Saxophone>,
 <Event 2024-04-02 21:15:00-05:00 - Gym>,
 <Event 2024-04-03 21:00:00-05:00 - Gym w/ Kenadi and Lauren>,
 <Event 2024-04-05 16:30:00-05:00 - Saxophone>,
 <Event 2024-04-05 22:00:00-05:00 - Party at Aley's>,
 <Event 2024-04-06 17:30:00-05:00 - Saxophone>,
 <Event 2024-04-03 17:45:00-05:00 - Saxophone>,
 <Event 2024-04-08 12:15:00-05:00 - Eclipse>,
 <Event 2024-04-08 17:00:00-05:00 - Hang out w/ Authencia, Hannah, Batyr, Priyansh>,
 <Event 2024-04-08 19:15:00-05:00 - Dinner w/ Hannah and Authencia>,
 <Event 2024-04-07 19:00:00-05:00 - Dinner w/ Hannah and Authencia>,
 <Event 2024-04-07 22:00:00-05:00 - Volleyball w/ Hannah and Authencia>,
 <Event 2024-04-08 22:15:00-05:00 - Volleyball w/ Hannah and Authencia>,
 <Event 2024-04-09 21:30:00-05:00 - Gym>,
 <Event 2024-04-09 23:00:00-05:00 - Volleyball w/ Authencia>,
 <Event 2024-04-09 14:00:00-05:00 - Lunch w/ Alex>,
 <Event 2024-04-10 13:30:00-05:00 - Lunch w/ Authencia>,
 <Event 2024-04-10 21:30:00-05:00 - Gym>,
 <Event 2024-04-10 23:00:00-05:00 - Hang out w/ Batyr, Authencia, and Hannah>,
 <Event 2024-04-10 18:30:00-05:00 - Lawn time>,
 <Event 2024-04-11 19:15:00-05:00 - Dinner w/ Hannah and Lauren>,
 <Event 2024-04-11 20:15:00-05:00 - Jasement w/ Hannah and Lauren>,
 <Event 2024-04-11 17:15:00-05:00 - Meet w/ Aley w/ Hannah and Lauren>,
 <Event 2024-04-12 23:00:00-05:00 - The Proposal w/ Lauren>,
 <Event 2024-04-13 14:30:00-05:00 - Trip to Austin Asian Town>,
 <Event 2024-04-14 00:00:00-05:00 - Minions: The Rise of Gru>,
 <Event 2024-04-14 14:00:00-05:00 - Explore Austin>,
 <Event 2024-04-15 18:00:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-16 21:15:00-05:00 - Gym>,
 <Event 2024-04-16 22:30:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-17 21:30:00-05:00 - Gym>,
 <Event 2024-04-17 23:45:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-18 23:00:00-05:00 - TTPD w/ Hannah and Andrew>,
 <Event 2024-04-19 19:45:00-05:00 - Hang out w/ Hannah and Kenadi>,
 <Event 2024-04-19 18:45:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-04-21 13:40:00-05:00 - Lunch w/ Hannah>,
 <Event 2024-04-21 21:15:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-21 23:15:00-05:00 - Get Out w/ Hannah and Andrew>,
 <Event 2024-04-22 22:30:00-05:00 - Drive w/ Hannah, Kenadi, Lauren>,
 <Event 2024-04-22 21:15:00-05:00 - Gym w/ Hannah, Kenadi, and Lauren>,
 <Event 2024-04-23 14:00:00-05:00 - Lunch w/ Alex>,
 <Event 2024-04-23 21:15:00-05:00 - Gym>,
 <Event 2024-04-23 17:15:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-23 22:00:00-05:00 - Group FT>,
 <Event 2024-04-23 20:15:00-05:00 - Dinner w/ Hannah and Lauren>,
 <Event 2024-04-24 18:00:00-05:00 - Gym w/ Hannah>,
 <Event 2024-04-24 23:00:00-05:00 - Hang out w/ Andrew and Hannah + watch Us>,
 <Event 2024-05-04 - Moving out w/ Jiant>,
 <Event 2024-04-24 19:30:00-05:00 - Women in Psych profit share>,
 <Event 2024-04-25 20:00:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-27 19:15:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-04-27 20:00:00-05:00 - Volleyball w/ Hannah>,
 <Event 2024-06-10 - 1st day of internship>,
 <Event 2024-04-29 17:00:00-05:00 - Meet w/ Hannah @ EER>,
 <Event 2024-04-29 17:30:00-05:00 - Walk to Cabo Bob's w/ Hannah and Andrew #2>,
 <Event 2024-04-28 21:15:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-04-29 18:00:00-05:00 - ASBMB profit share w/ Hannah and Andrew>,
 <Event 2024-04-29 22:15:00-05:00 - Volleyball w/ Hannah and Andrew>,
 <Event 2024-04-29 21:00:00-05:00 - Gym w/ Hannah (and Andrew)>,
 <Event 2024-04-30 00:00:00-05:00 - Hang out w/ Hannah and Andrew>,
 <Event 2024-04-30 14:30:00-05:00 - Lunch w/ Hannah, Lauren, and Nick>,
 <Event 2024-04-30 19:00:00-05:00 - HEB w/ Andrew>,
 <Event 2024-04-30 20:15:00-05:00 - Hang out w/ Andrew (+ watch Smile)>,
 <Event 2024-05-01 20:15:00-05:00 - Hang out w/ Hannah and Lauren>,
 <Event 2024-05-01 19:30:00-05:00 - Dinner w/ Hannah and Lauren>,
 <Event 2024-05-01 21:00:00-05:00 - Volleyball w/ Hannah and Lauren>,
 <Event 2024-05-01 22:00:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-05-02 17:00:00-05:00 - Ochem review session w/ Lauren and Hannah (+ worked on Linguistics report)>,
 <Event 2024-05-02 20:00:00-05:00 - Dinner w/ Hannah and Lauren>,
 <Event 2024-05-02 22:00:00-05:00 - Hang out w/ Andrew>,
 <Event 2024-05-02 21:00:00-05:00 - Gym w/ Hannah (and Andrew)>,
 <Event 2024-05-03 11:00:00-05:00 - Breakfast w/ Hannah>,
 <Event 2024-05-03 20:00:00-05:00 - Gym>,
 <Event 2024-05-03 21:15:00-05:00 - Sonic run w/ Hannah and Lauren>,
 <Event 2024-05-03 22:00:00-05:00 - Hang out w/ Hannah and Lauren>,
 <Event 2024-05-03 23:15:00-05:00 - Movie night (Split) w/ Hannah, Lauren, and Andrew>,
 <Event 2024-05-04 02:30:00-05:00 - Hannah and Jasmine time>,
 <Event 2024-05-04 16:00:00-05:00 - Move out w/ Jiant>,
 <Event 2024-05-04 18:45:00-05:00 - Dinner w/ Jiant and Hannah>,
 <Event 2024-05-07 10:00:00-05:00 - Appointment>,
 <Event 2024-05-07 14:30:00-05:00 - Saxophone>,
 <Event 2024-05-07 10:45:00-05:00 - Shopping>,
 <Event 2024-05-07 23:15:00-05:00 - Facetime Andrew>,
 <Event 2024-05-06 20:00:00-05:00 - Gym (push day)>,
 <Event 2024-05-06 21:30:00-05:00 - HEB run>,
 <Event 2024-05-08 17:45:00-05:00 - Figure out Dallas trip>,
 <Event 2024-05-08 20:30:00-05:00 - Gym (leg day)>,
 <Event 2024-05-09 13:45:00-05:00 - Saxophone>,
 <Event 2024-05-09 20:00:00-05:00 - Gym (back and bi)>,
 <Event 2024-05-10 10:30:00-05:00 - Appointment>,
 <Event 2024-05-10 14:30:00-05:00 - Katy Mills w/ Anjie>,
 <Event 2024-05-10 11:45:00-05:00 - Shopping>,
 <Event 2024-05-11 00:00:00-05:00 - Facetime Andrew>,
 <Event 2024-05-14 - Visit Hannah in Dallas!!>,
 <Event 2024-05-15 - Aquarium>,
 <Event 2024-05-16 - Six Flags>,
 <Event 2024-05-13 14:15:00-05:00 - Saxophone>,
 <Event 2024-05-13 19:20:00-05:00 - Shopping>,
 <Event 2024-05-13 21:00:00-05:00 - Gym (push day)>,
 <Event 2024-05-12 17:30:00-05:00 - Mother's Day dinner w/ family>,
 <Event 2024-05-14 20:00:00-05:00 - Gathering at Anagaby’s w/ Hannah>,
 <Event 2024-05-14 18:30:00-05:00 - Dinner w Hannah and her family!>,
 <Event 2024-05-14 09:30:00-05:00 - Bus to Dallas>,
 <Event 2024-05-17 16:00:00-05:00 - Bus to Houston>,
 <Event 2024-05-15 11:15:00-05:00 - Aquarium w/ Hannah>,
 <Event 2024-05-17 12:30:00-05:00 - Apartment shopping w/ Hannah>,
 <Event 2024-05-16 11:00:00-05:00 - Six Flags attempt>,
 <Event 2024-05-20 20:15:00-05:00 - Gym (push day)>,
 <Event 2024-05-21 20:15:00-05:00 - Gym (leg day)>,
 <Event 2024-05-22 20:00:00-05:00 - Gym (back and bi)>,
 <Event 2024-05-26 17:00:00-05:00 - Dinner>,
 <Event 2024-05-26 08:00:00-05:00 - Flight to El Calafate>,
 <Event 2024-05-25 17:00:00-05:00 - Dinner and Tango show>,
 <Event 2024-05-24 09:15:00-05:00 - Brunch at Cafe Tortoni>,
 <Event 2024-05-23 18:00:00-05:00 - Flight to Buenos Aires>,
 <Event 2024-06-05 21:00:00-05:00 - Flight from Buenos Aires to Houston>,
 <Event 2024-06-10 12:00:00-05:00 - New Employee Orientation (NEO)>,
 <Event 2024-06-07 10:30:00-05:00 - Call Mike to set up laptop>,
 <Event 2024-06-07 11:15:00-05:00 - Onboarding tasks>,
 <Event 2024-06-04 20:30:00-05:00 - Mommy's birthday dinner>,
 <Event 2024-06-05 11:00:00-05:00 - La Recoleta Cemetery>,
 <Event 2024-06-05 13:45:00-05:00 - Admire street art>,
 <Event 2024-06-03 18:15:00-05:00 - Dinner @ border of 3 countries>,
 <Event 2024-05-23 - Argentina trip!>,
 <Event 2024-06-03 08:15:00-05:00 - Iguazu National Park>,
 <Event 2024-05-24 - Buenos Aires, Argentina>,
 <Event 2024-05-26 - El Calafate, Argentina>,
 <Event 2024-06-03 - Iguazu, Argentina>,
 <Event 2024-06-04 - Buenos Aires, Argentina>,
 <Event 2024-05-27 08:00:00-05:00 - Glacier cruise>,
 <Event 2024-05-28 - Sick day>,
 <Event 2024-05-29 09:00:00-05:00 - Bus to Puerto Natales>,
 <Event 2024-05-30 07:00:00-05:00 - Torres del Paine Drive>,
 <Event 2024-05-31 07:00:00-05:00 - Torres del Paine hike>,
 <Event 2024-06-01 08:30:00-05:00 - Bus to El Calafate>,
 <Event 2024-05-29 - Puerto Natales, Chile>,
 <Event 2024-06-01 - El Calafate, Argentina>,
 <Event 2024-06-04 10:00:00-05:00 - Walk in Iguazu city center>,
 <Event 2024-06-08 18:00:00-05:00 - Dinner w/ family, 外婆外公, Flora>,
 <Event 2024-06-06 19:45:00-05:00 - Deliver wontons to Waipo + HEB trip>,
 <Event 2024-06-09 18:30:00-05:00 - Deliver chicken to 外婆>,
 <Event 2024-06-10 09:00:00-05:00 - Welcome to the AI Consulting Team!>,
 <Event 2024-06-10 13:30:00-05:00 - Orientation cont. (Q&A)>,
 <Event 2024-06-18 11:35:00-05:00 - 1 on 1 w/ Bruno>,
 <Event 2024-06-10 19:00:00-05:00 - Visit Waipo to fill out I-9 sec. 2>,
 <Event 2024-06-11 10:00:00-05:00 - AI Consulting Overview & Onboarding>,
 <Event 2024-06-11 11:35:00-05:00 - 1 on 1 w/ Bruno>,
 <Event 2024-06-12 12:05:00-05:00 - Team Skills, Project Need>,
 <Event 2024-06-12 12:30:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-13 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-14 20:45:00-05:00 - HEB run>,
 <Event 2024-06-14 19:15:00-05:00 - Gym (leg day)>,
 <Event 2024-06-16 18:00:00-05:00 - Dinner w/ family, Liang, Logan, Luke>,
 <Event 2024-06-17 19:15:00-05:00 - Gym (back and bi) >,
 <Event 2024-07-05 - Alex weekend>,
 <Event 2024-06-22 12:00:00-05:00 - Lunch w/ grandparents, Liang, Logan, Luke>,
 <Event 2024-06-23 11:00:00-05:00 - Typhoon Texas w/ Liang, Logan, Luke>,
 <Event 2024-06-24 19:15:00-05:00 - Gym (leg day)>,
 <Event 2024-06-24 21:00:00-05:00 - HEB run>,
 <Event 2024-06-25 13:35:00-05:00 - 1-on-1 w/ Bruno>,
 <Event 2024-06-25 19:15:00-05:00 - Gym (back and bi)>,
 <Event 2024-06-27 20:00:00-05:00 - Presidential debate>,
 <Event 2024-06-28 19:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-06-29 - Logan and Luke weekend>,
 <Event 2024-06-29 01:30:00-05:00 - FaceTime Hannah>,
 <Event 2024-06-30 01:30:00-05:00 - FaceTime Alex>,
 <Event 2024-07-01 19:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-02 11:35:00-05:00 - 1-on-1 w/ Bruno>,
 <Event 2024-07-02 13:05:00-05:00 - SKLZ Catch-up>,
 <Event 2024-07-04 - PAID HOLIDAY>,
 <Event 2024-07-02 19:15:00-05:00 - Gym (leg day)>,
 <Event 2024-07-03 13:00:00-05:00 - Meet w/ Aaron (Aero GSC intro)>,
 <Event 2024-07-03 19:00:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-04 14:00:00-05:00 - Hang out at 爷爷奶奶's>,
 <Event 2024-07-04 12:00:00-05:00 - Chenlu's birthday lunch>,
 <Event 2024-07-05 14:15:00-05:00 - Alex arrives>,
 <Event 2024-07-05 22:30:00-05:00 - Hang out w/ Alex>,
 <Event 2024-07-05 14:30:00-05:00 - Lunch ish w/ Alex>,
 <Event 2024-07-07 13:45:00-05:00 - Trader Joe's run>,
 <Event 2024-07-07 13:00:00-05:00 - Drop Alex off>,
 <Event 2024-07-06 22:30:00-05:00 - Poker w/ Jiant, Justin, Alex>,
 <Event 2024-07-06 18:15:00-05:00 - Dinner w/ Alex>,
 <Event 2024-07-06 16:00:00-05:00 - Andretti w/ Alex>,
 <Event 2024-07-06 15:15:00-05:00 - Dessert & Kinokuniya w/ Alex>,
 <Event 2024-07-06 14:15:00-05:00 - Lunch w/ Alex>,
 <Event 2024-07-15 15:05:00-05:00 - AI Consulting/Aimlabs Weekly Demo - James Wells/Tako Mutnik: Command Media Mapping>,
 <Event 2024-07-22 15:05:00-05:00 - AI Consulting/Aimlabs Weekly Demo - Travis Jefferies: CMM2CM>,
 <Event 2024-07-29 15:05:00-05:00 - AI Consulting/Aimlabs Weekly Demo - Frank Phillips: Fine-Tuning as a Service (FTaaS)>,
 <Event 2024-07-08 - Power outage - Beryl>,
 <Event 2024-07-08 13:15:00-05:00 - Family poker>,
 <Event 2024-07-08 21:30:00-05:00 - Family poker>,
 <Event 2024-07-08 17:45:00-05:00 - Dinner at 外婆外公's>,
 <Event 2024-07-08 11:15:00-05:00 - Read>,
 <Event 2024-07-09 19:30:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-09 14:00:00-05:00 - Aero GSC intro>,
 <Event 2024-06-12 15:00:00-05:00 - AI Consulting Bi-Weekly Team Mtg>,
 <Event 2024-06-12 15:00:00-05:00 - AI Consulting Bi-Weekly Team Mtg>,
 <Event 2024-07-10 15:00:00-05:00 - AI Consulting Bi-Weekly Team Mtg>,
 <Event 2024-07-10 19:30:00-05:00 - Gym (leg day)>,
 <Event 2024-07-12 19:30:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-15 19:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-16 12:30:00-05:00 - Meet w/ Tyler (impromptu)>,
 <Event 2024-07-16 19:15:00-05:00 - Gym (leg day)>,
 <Event 2024-07-16 15:45:00-05:00 - Dental appt.>,
 <Event 2024-07-17 11:30:00-05:00 - Foundations All Hands>,
 <Event 2024-07-18 19:15:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-19 14:45:00-05:00 - tayLyrics w/ Hannah!>,
 <Event 2024-07-19 12:30:00-05:00 - Lunch + shopping w/ 外婆>,
 <Event 2024-07-20 19:30:00-05:00 - Family poker>,
 <Event 2024-07-20 21:15:00-05:00 - Inside Out 2>,
 <Event 2024-07-22 00:00:00-05:00 - tayLyrics w/ Hannah>,
 <Event 2024-07-22 16:30:00-05:00 - Get C-130 data>,
 <Event 2024-07-22 19:15:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-23 12:00:00-05:00 - Meet w/ Issac w/ Tyler>,
 <Event 2024-07-23 10:00:00-05:00 - 1-on-1 w/ Bruno>,
 <Event 2024-07-23 12:30:00-05:00 - Meet w/ Tyler (impromptu)>,
 <Event 2024-08-14 19:00:00-05:00 - Flight to Houston (UA 1932)>,
 <Event 2024-08-11 09:40:00-05:00 - Flight to Seattle (UA 2606)>,
 <Event 2024-07-24 12:30:00-05:00 - Aero overview w/ Aaron and Travis>,
 <Event 2024-07-24 19:30:00-05:00 - Gym (leg day)>,
 <Event 2024-07-24 00:15:00-05:00 - tayLyrics>,
 <Event 2024-07-25 00:15:00-05:00 - tayLyrics>,
 <Event 2024-07-25 15:15:00-05:00 - Meet w/ Aaron>,
 <Event 2024-07-25 16:00:00-05:00 - Farewell Bruno>,
 <Event 2024-08-08 - LAST DAY>,
 <Event 2024-07-16 - Home>,
 <Event 2024-07-15 - Home>,
 <Event 2024-07-17 - Home>,
 <Event 2024-07-18 - Home>,
 <Event 2024-07-19 - Home>,
 <Event 2024-07-25 19:30:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-26 00:15:00-05:00 - tayLyrics>,
 <Event 2024-07-27 09:00:00-05:00 - Dumbo appt.>,
 <Event 2024-07-26 15:00:00-05:00 - tayLyrics>,
 <Event 2024-07-26 19:35:00-05:00 - tayLyrics (added leaderboard)>,
 <Event 2024-07-26 22:30:00-05:00 - tayLyrics>,
 <Event 2024-07-27 02:00:00-05:00 - tayLyrics>,
 <Event 2024-07-28 00:00:00-05:00 - tayLyrics deployment>,
 <Event 2024-07-27 18:00:00-05:00 - Dinner w/ Jiant and Justin>,
 <Event 2024-07-29 19:15:00-05:00 - Gym (back and bi)>,
 <Event 2024-07-29 21:15:00-05:00 - HEB run>,
 <Event 2024-07-29 22:30:00-05:00 - tayLyrics>,
 <Event 2024-07-30 00:30:00-05:00 - tayLyrics (restructuring)>,
 <Event 2024-07-30 10:30:00-05:00 - Aero GSC tag up>,
 <Event 2024-07-30 13:35:00-05:00 - Meet w/ Daria and Lance w/ Tyler>,
 <Event 2024-07-30 19:30:00-05:00 - Gym (leg day)>,
 <Event 2024-07-31 00:30:00-05:00 - tayLyrics (restructuring cont.)>,
 <Event 2024-07-31 21:00:00-05:00 - tayLyrics - completed restructuring, redeployed>,
 <Event 2024-08-01 00:15:00-05:00 - tayLyrics - bug fixes and playing>,
 <Event 2024-06-17 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-17 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-19 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-20 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-24 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-06-25 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-01 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-03 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-09 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-10 14:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-11 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-18 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-22 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-23 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-24 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-25 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-30 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-07-31 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-08-01 09:00:00-05:00 - Meet w/ Tyler>,
 <Event 2024-08-01 12:00:00-05:00 - 2024 Intern Offboarding>,
 <Event 2024-08-01 19:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-06-13 - TODO>,
 <Event 2024-06-14 - TODO>,
 <Event 2024-06-17 - TODO>,
 <Event 2024-06-18 - TODO>,
 <Event 2024-06-19 - TODO>,
 <Event 2024-06-20 - TODO>,
 <Event 2024-06-24 - TODO>,
 <Event 2024-06-25 - TODO>,
 <Event 2024-06-26 - TODO>,
 <Event 2024-06-27 - TODO>,
 <Event 2024-06-28 - TODO>,
 <Event 2024-07-01 - TODO>,
 <Event 2024-07-02 - TODO>,
 <Event 2024-07-03 - TODO>,
 <Event 2024-07-05 - TODO>,
 <Event 2024-07-08 - TODO>,
 <Event 2024-07-09 - TODO>,
 <Event 2024-07-10 - TODO>,
 <Event 2024-07-11 - TODO>,
 <Event 2024-07-12 - TODO>,
 <Event 2024-07-15 - TODO>,
 <Event 2024-07-16 - TODO>,
 <Event 2024-07-17 - TODO>,
 <Event 2024-07-18 - TODO>,
 <Event 2024-07-19 - TODO>,
 <Event 2024-07-22 - TODO>,
 <Event 2024-07-23 - TODO>,
 <Event 2024-07-24 - TODO>,
 <Event 2024-07-26 - TODO>,
 <Event 2024-07-29 - TODO>,
 <Event 2024-07-30 - TODO>,
 <Event 2024-07-31 - TODO>,
 <Event 2024-08-01 - TODO>,
 <Event 2024-08-02 17:30:00-05:00 - internship_database - starting up>,
 <Event 2024-08-02 20:00:00-05:00 - internship_database>,
 <Event 2024-08-03 00:30:00-05:00 - internship_database>,
 <Event 2024-08-03 18:00:00-05:00 - internship_database>,
 <Event 2024-08-03 20:30:00-05:00 - internship_database>,
 <Event 2024-08-04 00:00:00-05:00 - internship_database>,
 <Event 2024-08-04 13:30:00-05:00 - Visit Rebecca and cats!>,
 <Event 2024-08-04 19:45:00-05:00 - HEB run>,
 <Event 2024-08-04 20:30:00-05:00 - internship_database - implementing settings>,
 <Event 2024-08-04 22:15:00-05:00 - internship_database>,
 <Event 2024-07-11 13:00:00-05:00 - Aero GSC tag-up>,
 <Event 2024-07-18 15:00:00-05:00 - Aero GSC tag-up>,
 <Event 2024-07-25 15:00:00-05:00 - Aero GSC tag-up>,
 <Event 2024-08-17 - MOVE-IN>,
 <Event 2024-08-05 19:30:00-05:00 - Gym (back and bi)>,
 <Event 2024-08-06 00:15:00-05:00 - lyriguessr - radiohead>,
 <Event 2024-08-06 10:30:00-05:00 - Aero GSC tag-up>,
 <Event 2024-08-09 14:00:00-05:00 - UTCS + MLDS Sync>,
 <Event 2024-08-06 19:30:00-05:00 - Gym (leg day)>,
 <Event 2024-08-06 23:00:00-05:00 - lyriguessr - started up pipeline>,
 <Event 2024-08-07 01:00:00-05:00 - lyriguessr - lyric pull class (messy ver.) done>,
 <Event 2024-08-07 21:00:00-05:00 - lyriguessr - played around w quarto and github pages>,
 <Event 2024-06-13 14:05:00-05:00 - Paper Club>,
 <Event 2024-08-08 01:15:00-05:00 - lyricguessr - misc.>,
 <Event 2024-08-08 12:15:00-05:00 - Performance eval. w/ Bruno>,
 <Event 2024-08-08 08:30:00-05:00 - lyriguessr>,
 <Event 2024-08-08 15:00:00-05:00 - Aero GSC tag-up>,
 <Event 2024-08-08 16:00:00-05:00 - 1-on-1 w/ Lance>,
 <Event 2024-08-08 19:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-06-20 14:05:00-05:00 - TMI (Tools, Methods, Implementation)>,
 <Event 2024-08-01 14:05:00-05:00 - END OF INTERNSHIP PRESENTATION w/ TYLER>,
 <Event 2024-08-09 17:30:00-05:00 - tayLyrics & lyriguessr>,
 <Event 2024-08-10 00:15:00-05:00 - lyriguessr>,
 <Event 2024-08-10 02:00:00-05:00 - lyriguessr - website>,
 <Event 2024-08-12 - posit::conf 2024>,
 <Event 2024-08-09 21:15:00-05:00 - Chat w/ Cathy and family>,
 <Event 2024-08-10 12:30:00-05:00 - Lunch w/ Cathy and family>,
 <Event 2024-08-10 16:45:00-05:00 - Shopping>,
 <Event 2024-08-11 00:45:00-05:00 - lyriguessr - deployed waterparksGuessr>,
 <Event 2024-08-11 06:45:00-05:00 - Lyft to Airport>,
 <Event 2024-08-12 14:30:00-05:00 - Opp. Scholar Lunch >,
 <Event 2024-08-12 19:00:00-05:00 - Welcome Reception>,
 <Event 2024-08-13 10:30:00-05:00 - Demo: Posit Connect Cloud>,
 <Event 2024-08-13 11:00:00-05:00 - Keynote Session: Updates from Posit>,
 <Event 2024-08-13 12:20:00-05:00 - Navigating A Career In Data Science>,
 <Event 2024-08-13 13:40:00-05:00 - Networking Lunch>,
 <Event 2024-08-13 16:40:00-05:00 - Making Decisions with Data>,
 <Event 2024-08-13 16:40:00-05:00 - Innovating with Shiny>,
 <Event 2024-08-13 18:15:00-05:00 - Keynote Session: Practical Tips for using Generative AI in Data Science Workflows | Melissa Van Bussel>,
 <Event 2024-08-13 21:30:00-05:00 - conf::carnival>,
 <Event 2024-08-14 11:00:00-05:00 - Keynote Session: A future of data science | Allen Downey>,
 <Event 2024-08-14 12:20:00-05:00 - Data Engineering>,
 <Event 2024-08-14 13:40:00-05:00 - Networking Lunch>,
 <Event 2024-08-14 13:45:00-05:00 - Lunch and Learn hosted by ProCogia | Using GenAI in a Multilingual Environment>,
 <Event 2024-08-14 13:50:00-05:00 - Demo: Collaboration between R & Python with Pins>,
 <Event 2024-08-14 15:00:00-05:00 - Data Science Case Studies>,
 <Event 2024-08-14 15:00:00-05:00 - It's R And Python, Not R Or Python>,
 <Event 2024-08-14 15:00:00-05:00 - Level Up Your Data Science Skills>,
 <Event 2024-08-14 16:30:00-05:00 - tidyverse Team Meetup>,
 <Event 2024-08-14 16:25:00-05:00 - Data Visualizations: Idea > Process > Sharing>,
 <Event 2024-08-14 16:25:00-05:00 - This Session Was Not Generated By AI>,
 <Event 2024-08-14 18:15:00-05:00 - Keynote Session: Data Wrangling [for Python or R] Like a Boss With DuckDB | Hannes Mühleisen>,
 <Event 2024-08-14 10:30:00-05:00 - Demo: Positron Talk Extended Q&A>,
 <Event 2024-08-11 15:45:00-05:00 - Seattle Art Museum>,
 <Event 2024-08-11 19:15:00-05:00 - posit::conf check-in>,
 <Event 2024-08-12 11:00:00-05:00 - Databases with R>,
 <Event 2024-08-11 18:00:00-05:00 - Check in>,
 <Event 2024-04-29 15:05:00-05:00 - AI Consulting/Aimlabs Weekly Demo - Placeholder>,
 <Event 2024-08-12 15:05:00-05:00 - AI Consulting/Aimlabs Weekly Demo - Alan Wang: Nvidia Modulus White Paper>,
 <Event 2024-08-12 21:15:00-05:00 - Gym (back and bi?)>,
 <Event 2024-08-11 21:45:00-05:00 - Get poke>,
 <Event 2024-08-12 22:20:00-05:00 - Get pizza>,
 <Event 2024-08-13 12:20:00-05:00 - Machine Learning And Statistical Modeling>,
 <Event 2024-08-13 14:15:00-05:00 - Demo: Automate your reporting with Quarto dashboards and Posit Connect>,
 <Event 2024-08-13 14:00:00-05:00 - Quarto Team Meetup>,
 <Event 2024-08-13 15:00:00-05:00 - Beautiful And Effective Tables>,
 <Event 2024-08-13 16:40:00-05:00 - Automated Reporting With Quarto: Beyond Copy And Paste>,
 <Event 2024-08-14 01:45:00-05:00 - lyriguessr - website customization>,
 <Event 2024-08-11 - Stay at Hyatt Regency Seattle>,
 <Event 2024-08-14 12:20:00-05:00 - What's New with Shiny?>,
 <Event 2024-08-14 14:30:00-05:00 - Birds of a Feather>,
 <Event 2024-08-14 15:00:00-05:00 - Pour Some Glitter On It: Custom Quarto Outputs>,
 <Event 2024-08-15 23:15:00-05:00 - lyriguessr - properly implemented lyric counts>,
 <Event 2024-08-16 02:15:00-05:00 - lyriguessr - UI fixes>,
 <Event 2024-08-16 20:00:00-05:00 - Packing>,
 <Event 2024-08-17 00:30:00-05:00 - lyriguessr - logo>,
 <Event 2024-08-17 09:00:00-05:00 - Drive to Austin>,
 <Event 2024-08-17 13:45:00-05:00 - Lunch w/ parents>,
 <Event 2024-08-17 19:00:00-05:00 - Dinner w/ Hannah and family>,
 <Event 2024-08-17 17:30:00-05:00 - Shopping w/ mom, Hannah, and Laura>,
 <Event 2024-08-18 10:00:00-05:00 - Shopping w/ Hannah and Laura>,
 <Event 2024-08-18 18:30:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-08-18 21:45:00-05:00 - tayLyrics w/ Hannah!>,
 <Event 2024-08-19 10:30:00-05:00 - Shopping w/ Hannah>,
 <Event 2024-08-20 21:30:00-05:00 - Hang out w Hannah, Lauren, and Sydney>,
 <Event 2024-08-21 11:30:00-05:00 - Inspection form w Hannah>,
 <Event 2024-08-20 18:15:00-05:00 - Kenadi’s birthday dinner>,
 <Event 2024-08-20 11:45:00-05:00 - Board games w Hannah, Lauren, and Kenadi>,
 <Event 2024-08-19 16:30:00-05:00 - Coffee shop w Hannah, Sydney, and Lauren>,
 <Event 2024-08-21 18:45:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-08-21 15:30:00-05:00 - Shopping w/ Hannah>,
 <Event 2024-08-21 21:30:00-05:00 - Board games w Hannah, Lauren, and Kenadi>,
 <Event 2024-11-23 - Thanksgiving Break>,
 <Event 2024-08-12 15:05:00-05:00 - AI Consulting/Aimlabs Weekly Demo - Placeholder>,
 <Event 2024-08-22 18:30:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-08-24 17:30:00-05:00 - tayLyrics hosting>,
 <Event 2024-08-24 15:20:00-05:00 - Stroll around campus>,
 <Event 2024-08-28 14:00:00-05:00 - Jasmine/Jessy>,
 <Event 2024-08-26 11:45:00-05:00 - Attempt to reserve MLDS room>,
 <Event 2024-08-26 20:30:00-05:00 - Gym (back and bi)>,
 <Event 2024-08-27 14:15:00-05:00 - The Standard renewals open>,
 <Event 2024-08-26 22:30:00-05:00 - Games w/ Kenadi, Lauren, Hannah, Sydney>,
 <Event 2024-08-27 15:45:00-05:00 - Pick up container for Lauren>,
 <Event 2024-08-27 20:50:00-05:00 - Gym (leg day)>,
 <Event 2024-08-28 17:40:00-05:00 - Shopping w/ Hannah>,
 <Event 2024-08-28 20:30:00-05:00 - Dinner w/ Hannah>,
 <Event 2024-08-30 13:00:00-05:00 - Get interviewed by Hannah>,
 <Event 2024-08-29 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-01 21:30:00-05:00 - Canon's apartment party>,
 <Event 2024-08-30 09:00:00-05:00 - lyriguessr - modularization, AWS>,
 <Event 2024-09-01 18:00:00-05:00 - lyriguessr - finally got AWS stuff done!>,
 <Event 2024-09-02 02:00:00-05:00 - lyriguessr - misc. dev>,
 <Event 2024-09-02 17:30:00-05:00 - a lil stroll>,
 <Event 2024-09-02 15:30:00-05:00 - lyriguessr - misc.>,
 <Event 2024-09-03 00:45:00-05:00 - lyriguessr - website>,
 <Event 2024-09-03 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-04 09:15:00-05:00 - lyriguessr - misc. site stuff>,
 <Event 2024-09-04 20:30:00-05:00 - Gym (leg day)>,
 <Event 2024-09-05 01:15:00-05:00 - lyrigetter - added lana + misc.>,
 <Event 2024-09-05 18:30:00-05:00 - Lauren's birthday dinner>,
 <Event 2024-09-06 19:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-08 15:00:00-05:00 - 99 Ranch run>,
 <Event 2024-09-09 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-10 01:15:00-05:00 - lyriguessr - bad omens AWS, clairo game>,
 <Event 2024-09-10 09:00:00-05:00 - lyriguessr - instances, website puns>,
 <Event 2024-09-10 15:45:00-05:00 - lyriguessr promo>,
 <Event 2024-09-11 20:45:00-05:00 - Gym (leg day)>,
 <Event 2024-09-12 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-13 09:00:00-05:00 - tayLyrics promo>,
 <Event 2024-09-13 10:45:00-05:00 - tayLyrics promo>,
 <Event 2024-09-13 12:30:00-05:00 - ADPi Tex-Mex Lunch w/ Hannah, Anthony, Sydney, Elsa>,
 <Event 2024-09-13 20:45:00-05:00 - Gym (fuck around day)>,
 <Event 2024-09-14 01:15:00-05:00 - lyriguessr / tayLyrics - analytics and logs>,
 <Event 2024-09-15 02:00:00-05:00 - lyriguessr - log analytics>,
 <Event 2024-10-05 - Katy Trip w/ Hannah>,
 <Event 2024-10-12 - Six Flags w/ Hannah>,
 <Event 2024-09-15 15:30:00-05:00 - Stroll + Trader Joe's run>,
 <Event 2024-09-16 16:15:00-05:00 - lyriguessr - acceptable answers>,
 <Event 2024-09-16 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-18 09:15:00-05:00 - lyriguessr - TZ modification, etc.>,
 <Event 2024-09-18 20:30:00-05:00 - Gym (leg day)>,
 <Event 2024-09-19 01:30:00-05:00 - lyriguessr - deployed Sabrina's game, other AWS things, etc.>,
 <Event 2024-09-20 13:00:00-05:00 - Shopping w/ Hannah>,
 <Event 2024-09-19 20:30:00-05:00 - Gym (back and bi!!)>,
 <Event 2024-09-20 20:45:00-05:00 - Gym (fuck around day)>,
 <Event 2024-09-21 12:45:00-05:00 - Costco run w/ Hannah>,
 <Event 2024-09-22 19:00:00-05:00 - Hang out w/ Calvin>,
 <Event 2024-09-23 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-09-24 16:50:00-05:00 - lyriguessr - AWS stuff, scraping FOB, etc.>,
 <Event 2024-09-24 20:00:00-05:00 - Gym (leg day)>,
 <Event 2024-09-26 20:45:00-05:00 - Gym (back and bi!)>,
 <Event 2024-09-27 12:30:00-05:00 - ADPi Tex-Mex Lunch w/ Hannah and Anthony>,
 <Event 2024-09-27 19:00:00-05:00 - Hang out w/ Kyler>,
 <Event 2024-09-30 11:00:00-05:00 - MLL Matching Event + MLDS>,
 <Event 2024-09-30 20:55:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-01 20:00:00-05:00 - Gym (leg day)>,
 <Event 2024-10-02 21:00:00-05:00 - Gym (fuck around day)>,
 <Event 2024-10-03 17:00:00-05:00 - misc. developing>,
 <Event 2024-10-03 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-05 11:15:00-05:00 - Drive to Katy w/ Hannah>,
 <Event 2024-10-05 13:30:00-05:00 - Lunch w/ family and Hannah>,
 <Event 2024-10-05 15:15:00-05:00 - Asian town w/ Hannah>,
 <Event 2024-10-06 21:30:00-05:00 - Drive to Austin w/ Hannah>,
 <Event 2024-10-03 15:30:00-05:00 - Chat w/ Garrick (Apple)>,
 <Event 2024-10-06 13:00:00-05:00 - Visit Rebecca & cats w/ mommy, Justin, Hannah>,
 <Event 2024-10-05 22:00:00-05:00 - Compatibility w/ family and Hannah>,
 <Event 2024-10-05 20:00:00-05:00 - Pickleball w/ Jiant, Justin, Hannah>,
 <Event 2024-10-05 17:30:00-05:00 - Make dumplings and wontons w/ mommy and Hannah>,
 <Event 2024-10-11 12:30:00-05:00 - MLDS <> NVIDIA Student Network>,
 <Event 2024-10-07 16:30:00-05:00 - Jasmine Xu and nicole.mcqueen@drivetime.com>,
 <Event 2024-10-07 21:00:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-08 20:15:00-05:00 - Gym (fuck around day)>,
 <Event 2024-10-09 20:30:00-05:00 - Gym (leg day) w/ Hannah>,
 <Event 2024-10-10 20:55:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-11 20:30:00-05:00 - Gym (fuck around day II)>,
 <Event 2024-10-12 23:15:00-05:00 - Drive to Austin w/ Hannah>,
 <Event 2024-10-12 12:00:00-05:00 - Six Flags w/ Hannah!>,
 <Event 2024-10-12 10:15:00-05:00 - Drive to San Antonio w/ Hannah>,
 <Event 2024-10-14 10:30:00-05:00 - journal_analyzer - frequency table WC & streamlit wordcloud package>,
 <Event 2024-10-14 17:00:00-05:00 - Online shopping...😅>,
 <Event 2024-10-14 21:05:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-14 18:15:00-05:00 - BISH meetup w/ Hannah>,
 <Event 2024-10-15 10:00:00-05:00 - journal_analyzer - text extraction pipeline>,
 <Event 2024-10-15 16:45:00-05:00 - journal_analyzer misc. stuff>,
 <Event 2024-10-15 20:30:00-05:00 - Gym (fuck around day)>,
 <Event 2024-10-15 22:15:00-05:00 - Hang out w Alex>,
 <Event 2024-10-16 20:45:00-05:00 - 100th gym day🥳! (leg day)>,
 <Event 2024-10-16 22:30:00-05:00 - Hang out w Alex>,
 <Event 2024-10-17 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-18 12:45:00-05:00 - favoritesGuessr - game done!>,
 <Event 2024-10-18 19:30:00-05:00 - Gym (fuck around day II)>,
 <Event 2024-10-18 23:25:00-05:00 - SDS Party>,
 <Event 2024-10-19 15:00:00-05:00 - Get into stadium & wait for game...w/ Hannah, Sydney, Kenadi, Elsa, Lauren>,
 <Event 2024-10-20 16:45:00-05:00 - HEB run>,
 <Event 2024-10-21 20:30:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-22 20:30:00-05:00 - Gym (leg day)>,
 <Event 2024-10-22 22:45:00-05:00 - Hang out w/ Alex>,
 <Event 2024-10-23 20:45:00-05:00 - Gym (fuck around day)>,
 <Event 2024-10-28 13:00:00-05:00 - Apple ADSP interview>,
 <Event 2024-08-29 14:30:00-05:00 - Intergroup project>,
 <Event 2024-08-29 14:00:00-05:00 - Intergroup project>,
 <Event 2024-09-05 14:00:00-05:00 - Intergroup project>,
 <Event 2024-09-12 14:30:00-05:00 - Intergroup project>,
 <Event 2024-10-03 14:30:00-05:00 - Intergroup project>,
 <Event 2024-10-10 14:30:00-05:00 - Intergroup project>,
 <Event 2024-10-17 14:30:00-05:00 - Intergroup project>,
 <Event 2024-10-24 20:55:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-25 23:00:00-05:00 - Hang out w Authencia, Hannah, Batyr, Emma, Alex>,
 <Event 2024-10-26 20:30:00-05:00 - Halloween Party @ Aley's>,
 <Event 2024-10-26 23:15:00-05:00 - Halloweekend night out w/ Hannah, Sydney, Elsa, Jenny, Kaitlyn>,
 <Event 2024-10-25 - Authencia visit!>,
 <Event 2024-10-28 12:00:00-05:00 - PCL Booking>,
 <Event 2024-10-28 00:45:00-05:00 - encyclopedia - intial setup and ideabank>,
 <Event 2024-11-13 12:30:00-06:00 - Meta Data Science Intern Interview>,
 <Event 2024-10-28 20:45:00-05:00 - Gym (back and bi)>,
 <Event 2024-10-28 22:45:00-05:00 - Hang out w Alex>,
 <Event 2024-10-29 14:00:00-05:00 - Target run>,
 <Event 2024-10-30 16:00:00-05:00 - Apple ADSP 2nd round interview (behavioural) w/ Ashley and Audra>,
 <Event 2024-10-31 15:00:00-05:00 - PCL booking>,
 <Event 2024-10-30 16:00:00-05:00 - PCL booking>,
 <Event 2024-10-30 15:00:00-05:00 - PCL booking>,
 <Event 2024-10-29 20:30:00-05:00 - Gym (leg day)>,
 <Event 2024-10-30 20:50:00-05:00 - Gym (push and abs)>,
 <Event 2024-10-31 11:20:00-05:00 - Vote>,
 <Event 2024-10-31 15:30:00-05:00 - Apple ADSP 3rd round interview (technical) w/ Krittika and Vivian>,
 <Event 2024-10-31 20:40:00-05:00 - Gym (back and bi)>,
 <Event 2024-11-04 - Integra Data Assessment>,
 <Event 2024-11-01 22:45:00-05:00 - Hang out w/ Alex>,
 <Event 2024-11-02 20:30:00-05:00 - Sonic w/ Hannah and Lauren>,
 <Event 2024-11-02 18:30:00-05:00 - Texas Ice Hockey vs A&M w/ Hannah and Lauren>,
 <Event 2024-11-03 16:05:00-06:00 - Hang out w/ Justin, Justin's friends, and Marisa>,
 <Event 2024-11-03 20:40:00-06:00 - Hang out w/ Alex>,
 <Event 2024-11-04 20:45:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-05 20:15:00-06:00 - Gym (leg day)>,
 <Event 2024-11-06 20:15:00-06:00 - Hannah's IM volleyball game>,
 <Event 2024-11-06 21:15:00-06:00 - Gym (push and abs)>,
 <Event 2024-11-07 20:55:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-15 13:30:00-06:00 - Sal Khan Live at UT: How AI Will Save Education>,
 <Event 2024-11-09 22:30:00-06:00 - Watch Gone Girl (2014)>,
 <Event 2024-11-10 20:25:00-06:00 - Gym (fuck around day)>,
 <Event 2024-11-11 20:55:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-12 14:00:00-06:00 - Target run>,
 <Event 2024-11-12 20:45:00-06:00 - Gym (leg day)>,
 <Event 2024-11-13 21:00:00-06:00 - Gym (push and abs)>,
 <Event 2024-11-14 11:00:00-06:00 - From Classrooms to College Sports>,
 <Event 2024-11-14 16:30:00-06:00 - Shopping w/ Hannah>,
 <Event 2024-11-14 18:15:00-06:00 - Dinner w Hannah>,
 <Event 2024-11-14 23:00:00-06:00 - Pancake Night @ Pike w/ Hannah, Sydney, Lauren, Abby>,
 <Event 2024-11-14 20:40:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-17 15:00:00-06:00 - Hang out w/ Marisa>,
 <Event 2024-11-24 19:30:00-06:00 - Bus to Katy>,
 <Event 2024-11-18 21:00:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-23 09:00:00-06:00 - Llama Impact Hackathon: Austin>,
 <Event 2024-11-19 21:30:00-06:00 - Gym (leg day)>,
 <Event 2024-11-19 20:15:00-06:00 - University Orchestra Concert w/ Anjie :)>,
 <Event 2024-11-20 01:00:00-06:00 - Super Mario w/ Hannah :)))>,
 <Event 2024-11-20 21:00:00-06:00 - Gym (push and abs)>,
 <Event 2024-11-21 00:00:00-06:00 - Super Mario w/ Hannah>,
 <Event 2024-11-21 20:50:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-22 17:00:00-06:00 - AITX Monthly Meetup + Llama Impact Hackathon Reception>,
 <Event 2024-11-23 08:20:00-06:00 - Bus w/ Anjie>,
 <Event 2024-11-23 09:00:00-06:00 - Breakfast, Team Formation>,
 <Event 2024-11-23 11:00:00-06:00 - Welcome Kickoff>,
 <Event 2024-11-23 11:15:00-06:00 - Partner workshops>,
 <Event 2024-11-23 12:30:00-06:00 - Hacking starts>,
 <Event 2024-11-24 09:00:00-06:00 - Doors open & breakfast>,
 <Event 2024-11-24 12:00:00-06:00 - Submissions due>,
 <Event 2024-11-24 12:15:00-06:00 - First round judging>,
 <Event 2024-11-23 13:00:00-06:00 - Lunch>,
 <Event 2024-11-23 19:00:00-06:00 - Dinner>,
 <Event 2024-11-24 13:15:00-06:00 - Lunch>,
 <Event 2024-11-23 22:00:00-06:00 - Developing??>,
 <Event 2024-11-24 14:15:00-06:00 - Final round judging>,
 <Event 2024-11-24 15:00:00-06:00 - Keynote>,
 <Event 2024-11-24 15:15:00-06:00 - Winners announced>,
 <Event 2024-11-26 19:30:00-06:00 - Gym (back and bi)>,
 <Event 2024-11-26 23:35:00-06:00 - Facetime Alex>,
 <Event 2024-11-27 19:55:00-06:00 - Gym (leg day)>,
 <Event 2024-11-27 11:30:00-06:00 - Lunch + shopping w/ 外婆 and Justin>,
 <Event 2024-11-28 15:00:00-06:00 - Thanksgiving w/ family>,
 <Event 2024-11-29 21:00:00-06:00 - Family mahjong>,
 <Event 2024-11-29 11:00:00-06:00 - Shopping w/ mommy>,
 <Event 2024-11-30 13:00:00-06:00 - Gladiator 2 w/ Jiant and Justin>,
 <Event 2024-11-30 12:00:00-06:00 - Lunch w/ Jiant and Justin>,
 <Event 2024-12-01 16:30:00-06:00 - Drive to Austin>,
 <Event 2024-12-13 - Winter Break!>,
 <Event 2024-12-02 12:00:00-06:00 - Parking>,
 <Event 2024-12-02 16:30:00-06:00 - Target run w/ Anjie, Olivia>,
 <Event 2024-12-02 21:15:00-06:00 - Gym (back and bi)>,
 <Event 2024-12-02 18:15:00-06:00 - Costco + HEB run w/ Hannah, Anthony>,
 <Event 2024-12-03 00:15:00-06:00 - soniverse - grabbing my own top artists as sample data>,
 <Event 2024-12-02 11:00:00-06:00 - soniverse - started new project!>,
 <Event 2024-12-03 09:30:00-06:00 - soniverse - sample data. PROJECT NOW ON HIATUS>,
 <Event 2024-12-03 10:15:00-06:00 - spotify dashboard - started new project; built simple st app w user auth>,
 <Event 2024-12-03 17:00:00-06:00 - Gym w/ Anjie>,
 <Event 2024-12-03 21:00:00-06:00 - Gym (leg day)>,
 <Event 2024-12-04 18:30:00-06:00 - Spotify dashboard (whilst running feature_generator for research)>,
 <Event 2024-12-04 21:00:00-06:00 - Gym (push and abs)>,
 <Event 2024-12-05 00:00:00-06:00 - spotify dashboard>,
 <Event 2024-12-05 20:55:00-06:00 - Gym (back and bi)>,
 <Event 2024-12-06 01:45:00-06:00 - Spotify dashboard>,
 <Event 2024-12-07 00:00:00-06:00 - Hang out w/ Alex>,
 <Event 2024-12-07 23:45:00-06:00 - Watch The Girl with the Dragon Tattoo>,
 <Event 2024-12-08 15:00:00-06:00 - (Christmas) Shopping>,
 <Event 2024-12-09 21:15:00-06:00 - Gym (back and bi)>,
 <Event 2024-12-10 20:55:00-06:00 - Gym (leg day)>,
 <Event 2024-12-06 21:15:00-06:00 - "Study" w/ Alex>,
 <Event 2024-12-11 17:45:00-06:00 - Dashboard - playing w lastfm API>,
 <Event 2024-12-11 20:10:00-06:00 - Gym (push and abs)>,
 <Event 2024-12-12 12:00:00-06:00 - Dashboard - lastfm API, this week's top tracks>,
 <Event 2024-12-12 14:40:00-06:00 - Gift shopping>,
 <Event 2024-12-12 20:10:00-06:00 - Gym (back and bi)>,
 <Event 2024-12-13 14:45:00-06:00 - Drive to Katy>,
 <Event 2024-12-14 18:30:00-06:00 - Dinner gathering w/ grandparents>,
 <Event 2024-12-15 14:00:00-06:00 - Family photos>,
 <Event 2024-12-15 17:30:00-06:00 - Dashboard>,
 <Event 2024-12-15 23:25:00-06:00 - Dashboard - top tracks implementation>,
 <Event 2024-12-16 02:45:00-06:00 - Dashboard - lasfm recently listened>,
 <Event 2024-12-16 14:00:00-06:00 - Gift shopping w/ Justin>,
 <Event 2024-12-16 18:00:00-06:00 - Dashboard>,
 <Event 2024-12-16 19:55:00-06:00 - Gym (back and bi)>,
 <Event 2024-12-16 21:50:00-06:00 - HEB run>,
 <Event 2024-12-24 - Gym closed>,
 <Event 2024-12-25 - Gym closed>,
 <Event 2024-12-17 19:45:00-06:00 - Gym (leg day)>,
 <Event 2024-12-18 19:55:00-06:00 - Gym (push and abs)>,
 <Event 2024-10-24 14:30:00-05:00 - Intergroup project>,
 <Event 2024-11-07 14:30:00-06:00 - Intergroup project>,
 <Event 2024-12-19 19:55:00-06:00 - Gym (back and bi)>,
 <Event 2024-04-24 17:00:00-05:00 - Lockheed Martin EO InternReady Series - April >,
 <Event 2024-12-20 20:30:00-06:00 - Family mahjong>,
 <Event 2024-12-21 21:30:00-06:00 - Board game night w/ Hannah, Lauren, Kenadi, Sydney, Dylan>,
 <Event 2024-12-22 14:30:00-06:00 - Drive to Katy>,
 <Event 2024-12-22 14:00:00-06:00 - Visit Waterloo Records>,
 <Event 2024-12-23 02:00:00-06:00 - gcal_wrapped - intro & playing w API>,
 <Event 2024-12-23 20:10:00-06:00 - Gym (back and bi)>,
 <Event 2024-12-24 01:30:00-06:00 - gcal_wrapped - figured out basic authentication using gcsa>,
 <Event 2024-12-24 18:00:00-06:00 - Family Christmas Gathering>,
 <Event 2024-12-24 23:15:00-06:00 - Gift opening w/ family>,
 <Event 2024-12-25 18:45:00-06:00 - Board game (Spy Alley) w/ family>,
 <Event 2024-12-26 20:00:00-06:00 - Squid Game S2 (eps. 1-4) w/ Jiant and Mommy>,
 <Event 2024-12-27 01:45:00-06:00 - gcal_wrapped>,
 <Event 2024-12-27 14:25:00-06:00 - Gym (push and abs)>,
 <Event 2024-12-27 17:30:00-06:00 - Dinner w/ Yanzi + family>,
 <Event 2024-12-27 21:45:00-06:00 - Squid Game S2 (finished) w/ Jiant and Mommy>,
 <Event 2024-12-28 11:00:00-06:00 - Lunch w/ Yinin's family>,
 <Event 2024-12-29 16:00:00-06:00 - Gym (leg day)>,
 <Event 2024-01-16 20:00:00-06:00 - Volleyball w/ Hannah>,
 <Event 2024-02-01 21:30:00-06:00 - Volleyball>,
 <Event 2024-01-17 22:15:00-06:00 - Volleyball w/ Hannah + Lauren>,
 <Event 2024-02-14 21:30:00-06:00 - Volleyball w/ Hannah>,
 <Event 2024-12-30 16:00:00-06:00 - gcal_wrapped>,
 <Event 2024-12-30 19:45:00-06:00 - Gym (back and bi)>]
# probably filter out events that *I* did not create
EVENTS[-19].organizer.email
'jasminexu@utexas.edu'
# not too sure what to do w full-day events - presumably I'll remove them
EVENTS[-25].start, EVENTS[-25].end
(datetime.datetime(2024, 12, 19, 19, 55, tzinfo=tzoffset(None, -21600)),
 datetime.datetime(2024, 12, 19, 21, 35, tzinfo=tzoffset(None, -21600)))
e.color_id
'1'
test_events = []
for e in EVENTS[-25:]:
    if e.organizer.email == "jasminexu@utexas.edu":
        e_info = {
            "name": e.summary,
            "label": LABEL_MAP[e.color_id],
            "start": e.start,
            "end": e.end,
            "hours": (e.end - e.start).seconds / 3600,
            "minutes": (e.end - e.start).seconds / 60,
            "location": e.location
        }
        test_events.append(e_info)
test_events
[{'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 19, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Family mahjong',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 20, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 21, 0, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'Board game night w/ Hannah, Lauren, Kenadi, Sydney, Dylan',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 21, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 22, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Drive to Katy',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 22, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 22, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Visit Waterloo Records',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 22, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 22, 14, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Waterloo Records & Video, 600 N Lamar Blvd, Austin, TX 78703, USA'},
 {'name': 'gcal_wrapped - intro & playing w API',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 23, 2, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 23, 2, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 23, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 23, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'gcal_wrapped - figured out basic authentication using gcsa',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 24, 1, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 24, 1, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Family Christmas Gathering',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 24, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 24, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': None},
 {'name': 'Gift opening w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 24, 23, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 25, 0, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': None},
 {'name': 'Board game (Spy Alley) w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 25, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 25, 20, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Squid Game S2 (eps. 1-4) w/ Jiant and Mommy',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 12, 26, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 26, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'gcal_wrapped',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 27, 1, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 2, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 27, 14, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 15, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Dinner w/ Yanzi + family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 27, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 20, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Squid Game S2 (finished) w/ Jiant and Mommy',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 12, 27, 21, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 28, 0, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 2.9166666666666665,
  'minutes': 175.0,
  'location': None},
 {'name': "Lunch w/ Yinin's family",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 28, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 28, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 29, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 29, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 16, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 16, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 1, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball w/ Hannah + Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 17, 22, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 18, 0, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 14, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'gcal_wrapped',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 30, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 30, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 30, 19, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 30, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'}]
EVENTS_INFO = []

for e in EVENTS:
    if e.organizer.email == "jasminexu@utexas.edu":
        e_info = {
            "name": e.summary,
            "label": LABEL_MAP[e.color_id],
            "start": e.start,
            "end": e.end,
            "hours": (e.end - e.start).seconds / 3600,
            "minutes": (e.end - e.start).seconds / 60,
            "location": e.location
        }
        EVENTS_INFO.append(e_info)

EVENTS_INFO
[{'name': 'Winter Break',
  'label': None,
  'start': datetime.date(2023, 12, 12),
  'end': datetime.date(2024, 1, 15),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Wisdom teeth extraction',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 1, 11, 8, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 11, 10, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Consultation w/ Dr. Wiggins',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 1, 9, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 9, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': '801 S Mason Rd, Katy, TX 77450, USA'},
 {'name': 'Lunch w/ family (inc. Jennifer)',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 4, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 4, 14, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Feast Buffet, 1707 N Fry Rd, Katy, TX 77449, USA'},
 {'name': 'Eye appt.',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 1, 6, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 6, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Bus to Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 1, 15, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 15, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Call Jiant',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 17, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 21, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Laundry',
  'label': 'Default',
  'start': datetime.datetime(2024, 1, 19, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 19, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Night out w/ Hannah and friends',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 19, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 20, 3, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': None},
 {'name': 'Call parents',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 21, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 21, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None},
 {'name': 'Gym w/ Hannah + Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 17, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 23, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 24, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 25, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 25, 20, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': "Hannah's IM volleyball game",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 25, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 25, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'UT Recreational Sports Center, 2001 San Jacinto Blvd, Austin, TX 78712, USA'},
 {'name': 'Laundry',
  'label': 'Default',
  'start': datetime.datetime(2024, 1, 26, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 26, 12, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Frolicking w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 27, 12, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 27, 13, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Main Mall'},
 {'name': "Dinner (Cabo Bob's?) w/ Hannah",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 27, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 27, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': "Gathering at Aley's w/ Hannah",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 27, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 28, 1, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': '800 W 26th Street; apt. 303, door code 0226'},
 {'name': "Hannah's IM soccer game",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 28, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 28, 20, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Wright Whitaker Fields'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 29, 19, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 20, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'LM offer expires',
  'label': 'Default',
  'start': datetime.date(2024, 2, 4),
  'end': datetime.date(2024, 2, 5),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 31, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 21, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 1, 19, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 20, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 29, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 23, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 31, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 1, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 2, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 20, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'J2'},
 {'name': 'The Grammy Awards (CBS)',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 2, 4, 19, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 4, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'Bus to Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 11, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 11, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Austin Public Library w/ Hannah and Sydney',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 3, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 3, 14, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': 'Austin Central Library, Austin Public Library, 710 W Cesar Chavez St, Austin, TX 78701, USA'},
 {'name': 'Study w/ Hannah and Sydney',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 3, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 3, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'The Union'},
 {'name': 'Lunch w/ Hannah and Sydney',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 3, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 3, 15, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': "Torchy's Tacos, 110 San Antonio St Unit #120, Austin, TX 78701, USA"},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 4, 17, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 4, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': "Hannah's IM soccer game",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 4, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 4, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Charles Alan Wright Fields at the Berry M. Whitaker Sports Complex, 4901 Guadalupe St, Austin, TX 78751, USA'},
 {'name': 'Retrieve water bottle',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 4, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 4, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Charles Alan Wright Fields at the Berry M. Whitaker Sports Complex, 4901 Guadalupe St, Austin, TX 78751, USA'},
 {'name': "Hannah's IM volleyball game",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 8, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'UT Recreational Sports Center, 2001 San Jacinto Blvd, Austin, TX 78712, USA'},
 {'name': 'TTPD release day (11pm)',
  'label': 'Entertainment',
  'start': datetime.date(2024, 4, 18),
  'end': datetime.date(2024, 4, 19),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Watch IM basketball',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 5, 23, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Quick trip to Chick-fil-a',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 6, 22, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 6, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 7, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 5, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Drug screening for Lockheed',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 2, 7, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': '3708 Jefferson Street Suite B Austin, TX 78731'},
 {'name': 'tayLyrics w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 7, 23, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Bus to Houston',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 9, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 9, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': "Dinner at Waipo's place",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 9, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 9, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': "CNY dinner at 爷爷奶奶's",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 10, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 10, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 12, 20, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 20, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 12, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 13, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': "Hannah's IM volleyball game",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 15, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'UT Recreational Sports Center, 2001 San Jacinto Blvd, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah ',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 14, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Give Alex his gift',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 14, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 22, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'Dorm'},
 {'name': 'Nap',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 15, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 15, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 20, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'J2'},
 {'name': 'tayLyrics w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 15, 0, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 2, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Nap',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 16, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': "Movie + card games at Sydney's",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 17, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 2, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 6.0,
  'minutes': 360.0,
  'location': None},
 {'name': 'Trip to HEB',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 18, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Dinner w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 18, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'Dinner w/ the girls!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 17, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 17, 19, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Taco More'},
 {'name': 'Ping pong w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 18, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Jasement'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 19, 21, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 23, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 19, 23, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 0, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 19, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 20, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Nap',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 19, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 20, 20, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'tayLyrics w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 20, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Nature time w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 21, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 17, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'Blanton lawn'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 21, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hannah IM volleyball playoffs',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 22, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'UT Recreational Sports Center, 2001 San Jacinto Blvd, Austin, TX 78712, USA'},
 {'name': 'Texas THON Pancake Night',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 22, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 23, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Pike House'},
 {'name': 'Meet w/ Aley!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 23, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Watch Hannah play volleyball',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 23, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 20, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Chick fil a w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 23, 22, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 24, 0, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Chick-fil-A, 503 W Martin Luther King Jr Blvd, Austin, TX 78701, USA'},
 {'name': 'Trip to HEB w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 24, 19, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 24, 20, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Chat w/ Hannah and Chang',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 24, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 24, 4, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 26, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 26, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 20, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'J2'},
 {'name': 'tayLyrics w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 26, 23, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 27, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 20, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 27, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Meet w/ Connor',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 28, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Lucky Lab Coffee Co., 2421 San Antonio St, Austin, TX 78705, USA'},
 {'name': 'Lunch w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 29, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 14, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'JCL'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 28, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Meet w/ Noah',
  'label': 'Default',
  'start': datetime.datetime(2024, 2, 29, 17, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 18, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Medici Roasting, 2222 Guadalupe St B, Austin, TX 78705, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 29, 19, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'J2'},
 {'name': 'Movie w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 29, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Tennis w/ Hannah, Sydney, Kenadi, and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 1, 19, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 21, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'Whitaker Tennis Courts, 4901 Guadalupe St, Austin, TX 78751, USA'},
 {'name': 'Jizza w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 1, 22, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Saltburn w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 1, 22, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 2, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': "Hannah's IM soccer playoffs",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 3, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 21, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Charles Alan Wright Fields at the Berry M. Whitaker Sports Complex, 4901 Guadalupe St, Austin, TX 78751, USA'},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 3, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Watch IM basketball',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 3, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Trip to Trader Joe’s',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 3, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': "Trader Joe's, 211 Walter Seaholm Dr Ste 100, Austin, TX 78701, USA"},
 {'name': "Dead Poet's Society (1/2) w/ Hannah",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 24, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 24, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': "Dead Poet's Society (2/2) w/ Hannah",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 3, 23, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 3, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 19, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'J2'},
 {'name': 'Spring Break',
  'label': None,
  'start': datetime.date(2024, 3, 9),
  'end': datetime.date(2024, 3, 18),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Lawn time w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 6, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'West Mall, W Mall, Austin, TX 78712, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 6, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 6, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 7, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'tayLyrics w/ Hannah and Kenadi',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 7, 23, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 8, 0, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 4, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Bus to Katy',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 8, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 8, 14, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 13, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 13, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Lunch and shopping w/ 外婆',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 14, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 14, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Visit 爷爷奶奶 w/ Justin',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 12, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 12, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Birthday dinner w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 16, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 16, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': None},
 {'name': 'Houston Rodeo x Jonas Brothers!',
  'label': 'Event',
  'start': datetime.datetime(2024, 3, 15, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 15, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 6.0,
  'minutes': 360.0,
  'location': 'NRG Stadium, NRG Pkwy, Houston, TX 77054, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 17, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 17, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Bus to Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 17, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 17, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 18, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 23, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 18, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Visit Anjie',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 18, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 18, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'JW 401'},
 {'name': 'Band pickup w/ Hannah and Sydney',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 19, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 19, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball w/ Hannah, Kenadi, and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 19, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Band pickup ',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 20, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'Jester event w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 20, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Jester Plaza'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 20, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'J2'},
 {'name': 'Gym w/ Hannah and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 21, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Hang out w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 21, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 0, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Dorm'},
 {'name': 'West Fest w/ Hannah and Sydney',
  'label': 'Event',
  'start': datetime.datetime(2024, 3, 22, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 23, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': 'DU & K Sig'},
 {'name': 'West Fest (ZBT)',
  'label': 'Event',
  'start': datetime.datetime(2024, 3, 23, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 23, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Zeta Beta Tau, 710 W 28th St, Austin, TX 78705, USA'},
 {'name': 'West Fest w/ Hannah and Sydney',
  'label': 'Event',
  'start': datetime.datetime(2024, 3, 23, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 24, 1, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': "Cabo Bob's w/ Hannah, Sydney, Lauren, and Kenadi",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 23, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 23, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': "Cabo Bob's Burritos, 2828 Rio Grande St, Austin, TX 78705, USA"},
 {'name': 'Maddie’s birthday party w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 23, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 23, 21, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0833333333333335,
  'minutes': 125.0,
  'location': None},
 {'name': 'Movie w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 24, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 0, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Trip to HEB',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 24, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Total eclipse',
  'label': 'Default',
  'start': datetime.date(2024, 4, 8),
  'end': datetime.date(2024, 4, 9),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 25, 21, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 26, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 27, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 27, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Lunch w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 28, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'JCL'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 28, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Dorm - sorry I had to'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 29, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'MRH'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 28, 18, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.8333333333333335,
  'minutes': 170.0,
  'location': 'MRH'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 29, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': "Dorm - I'm sorry again"},
 {'name': 'Waterparks Concert!!',
  'label': 'Event',
  'start': datetime.datetime(2024, 3, 30, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 30, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 4.75,
  'minutes': 285.0,
  'location': 'House of Blues, 1204 Caroline St, Houston, TX 77002, USA'},
 {'name': 'Waterparks VIP',
  'label': 'Event',
  'start': datetime.datetime(2024, 3, 30, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 30, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'House of Blues, 1204 Caroline St, Houston, TX 77002, USA'},
 {'name': 'Bus to Katy',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 30, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 30, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'Bus to Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 3, 31, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 31, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'Family lunch @ Katy Asian Town',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 31, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 31, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Mall w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 3, 31, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 31, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Katy Mills'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 1, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'MRH'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 2, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'MRH'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 2, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Kenadi and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 3, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 5, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'MRH'},
 {'name': "Party at Aley's",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 5, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 6, 2, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': 'Villas on 26th apt. 303; door code 0226'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 6, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 6, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'MRH'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 3, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 19, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'MRH'},
 {'name': 'Eclipse',
  'label': 'Event',
  'start': datetime.datetime(2024, 4, 8, 12, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Hang out w/ Authencia, Hannah, Batyr, Priyansh',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 8, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Duren'},
 {'name': 'Dinner w/ Hannah and Authencia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 8, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 20, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Kins'},
 {'name': 'Dinner w/ Hannah and Authencia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 7, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 7, 20, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'Volleyball w/ Hannah and Authencia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 7, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 0, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball w/ Hannah and Authencia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 8, 22, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 0, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 9, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball w/ Authencia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 9, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 23, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Greg'},
 {'name': 'Lunch w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 9, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 14, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'JCL'},
 {'name': 'Lunch w/ Authencia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 10, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'JCL'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 10, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w/ Batyr, Authencia, and Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 10, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 0, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Dorm'},
 {'name': 'Lawn time',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 10, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Blanton lawn'},
 {'name': 'Dinner w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 11, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'Jasement w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 11, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Meet w/ Aley w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 11, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'The Proposal w/ Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 12, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 13, 1, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Trip to Austin Asian Town',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 13, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 13, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'The Crescent, 6929 Airport Blvd, Austin, TX 78752, USA'},
 {'name': 'Minions: The Rise of Gru',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 14, 0, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 14, 1, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Explore Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 14, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 14, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Hang out w/ Andrew',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 15, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 16, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 16, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w/ Andrew',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 16, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 3, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 17, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w/ Andrew',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 17, 23, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 18, 3, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'TTPD w/ Hannah and Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 18, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 2, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'Hang out w/ Hannah and Kenadi',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 19, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 19, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Lunch w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 21, 13, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 21, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'J2'},
 {'name': 'Hang out w/ Andrew',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 21, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 21, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Get Out w/ Hannah and Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 21, 23, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Drive w/ Hannah, Kenadi, Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 22, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 22, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Lunch w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 23, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'JCL'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 23, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Greg'},
 {'name': 'Hang out w/ Andrew',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 23, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 20, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': 'Bench btwn WCP and Greg'},
 {'name': 'Group FT',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 23, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Dinner w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 23, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'J2'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w/ Andrew and Hannah + watch Us',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 24, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 25, 3, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': None},
 {'name': 'Moving out w/ Jiant',
  'label': 'Default',
  'start': datetime.date(2024, 5, 4),
  'end': datetime.date(2024, 5, 5),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Women in Psych profit share',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 24, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': "Cabo Bob's Burritos, 2828 Rio Grande St, Austin, TX 78705, USA"},
 {'name': 'Hang out w/ Andrew',
  'label': 'Default',
  'start': datetime.datetime(2024, 4, 25, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 26, 0, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 27, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 27, 19, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'J2'},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 27, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 27, 20, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Greg'},
 {'name': '1st day of internship',
  'label': 'Work',
  'start': datetime.date(2024, 6, 10),
  'end': datetime.date(2024, 6, 11),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Meet w/ Hannah @ EER',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 29, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': "Walk to Cabo Bob's w/ Hannah and Andrew #2",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 29, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Hang out w/ Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 28, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 28, 23, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'ASBMB profit share w/ Hannah and Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 29, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 20, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': "Cabo Bob's Burritos, 2828 Rio Grande St, Austin, TX 78705, USA"},
 {'name': 'Volleyball w/ Hannah and Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 29, 22, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 0, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Greg'},
 {'name': 'Gym w/ Hannah (and Andrew)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 29, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Greg'},
 {'name': 'Hang out w/ Hannah and Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 30, 0, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 0, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Dorm'},
 {'name': 'Lunch w/ Hannah, Lauren, and Nick',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 30, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Kins'},
 {'name': 'HEB w/ Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 30, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Hang out w/ Andrew (+ watch Smile)',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 4, 30, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 1, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.75,
  'minutes': 285.0,
  'location': None},
 {'name': 'Hang out w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 1, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Dorm'},
 {'name': 'Dinner w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 1, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'J2'},
 {'name': 'Volleyball w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 1, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w/ Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 1, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 22, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'Ochem review session w/ Lauren and Hannah (+ worked on Linguistics report)',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 2, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': 'McCombs School of Business, 2110 Speedway, Austin, TX 78705, USA'},
 {'name': 'Dinner w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 2, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'J2'},
 {'name': 'Hang out w/ Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 2, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Outside Jester'},
 {'name': 'Gym w/ Hannah (and Andrew)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 2, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Greg'},
 {'name': 'Breakfast w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 3, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Texas Expresso, 2110 San Jacinto Blvd, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 3, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Greg'},
 {'name': 'Sonic run w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 3, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Sonic Drive-In, 2632 S Lamar Blvd, Austin, TX 78704, USA'},
 {'name': 'Hang out w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 3, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Movie night (Split) w/ Hannah, Lauren, and Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 3, 23, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 4, 2, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'Dorm'},
 {'name': 'Hannah and Jasmine time',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 4, 2, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 4, 5, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Move out w/ Jiant',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 4, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 4, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Dinner w/ Jiant and Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 4, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 4, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Appointment',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 5, 7, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 7, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 7, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 7, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Shopping',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 7, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 7, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Facetime Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 7, 23, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 8, 2, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'Gym (push day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 6, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 6, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 6, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 6, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Figure out Dallas trip',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 8, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 8, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 8, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 8, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 9, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 9, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 9, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 9, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Appointment',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 5, 10, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 10, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Katy Mills w/ Anjie',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 10, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 10, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': 'Katy Mills'},
 {'name': 'Shopping',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 10, 11, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 10, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Facetime Andrew',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 11, 0, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 11, 2, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Visit Hannah in Dallas!!',
  'label': 'Family/Friends',
  'start': datetime.date(2024, 5, 14),
  'end': datetime.date(2024, 5, 18),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Aquarium',
  'label': 'Default',
  'start': datetime.date(2024, 5, 15),
  'end': datetime.date(2024, 5, 16),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Six Flags',
  'label': 'Default',
  'start': datetime.date(2024, 5, 16),
  'end': datetime.date(2024, 5, 17),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Saxophone',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 13, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 13, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Shopping',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 13, 19, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 13, 20, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': '99 Ranch'},
 {'name': 'Gym (push day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 13, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 13, 21, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': "Mother's Day dinner w/ family",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 12, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 12, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'Gathering at Anagaby’s w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 14, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 15, 0, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 4.75,
  'minutes': 285.0,
  'location': None},
 {'name': 'Dinner w Hannah and her family!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 14, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 14, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Bus to Dallas',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 14, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 14, 14, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 5.25,
  'minutes': 315.0,
  'location': None},
 {'name': 'Bus to Houston',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 17, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 17, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Aquarium w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 15, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 15, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'The Dallas World Aquarium, 1801 N Griffin St, Dallas, TX 75202, USA'},
 {'name': 'Apartment shopping w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 17, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 17, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Six Flags attempt',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 5, 16, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 16, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Six Flags Over Texas, Arlington, TX 76011, USA'},
 {'name': 'Gym (push day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 20, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 20, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 21, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 21, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 22, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 22, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Dinner',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 26, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 26, 18, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'La Lechuza Pizza y Pastas, Av. del Libertador 1301, Z9405 El Calafate, Santa Cruz, Argentina'},
 {'name': 'Flight to El Calafate',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 26, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 26, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Dinner and Tango show',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 25, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 25, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'La Ventana - Barrio de Tango, Balcarce 431, C1064AAI Cdad. Autónoma de Buenos Aires, Argentina'},
 {'name': 'Brunch at Cafe Tortoni',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 24, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 24, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Café Tortoni, Av. de Mayo 825, C1084 Cdad. Autónoma de Buenos Aires, Argentina'},
 {'name': 'Flight to Buenos Aires',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 23, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 24, 6, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 12.0,
  'minutes': 720.0,
  'location': None},
 {'name': 'Flight from Buenos Aires to Houston',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 5, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 6, 5, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 8.0,
  'minutes': 480.0,
  'location': None},
 {'name': 'New Employee Orientation (NEO)',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 10, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Call Mike to set up laptop',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 7, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 7, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Onboarding tasks',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 7, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 7, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': "Mommy's birthday dinner",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 4, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 4, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'Don Julio, Guatemala 4699, C1425 Cdad. Autónoma de Buenos Aires, Argentina'},
 {'name': 'La Recoleta Cemetery',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 5, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 5, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Admire street art',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 5, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 5, 14, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Palermo, Buenos Aires, Argentina'},
 {'name': 'Dinner @ border of 3 countries',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 3, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 3, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Hito Tres Fronteras, Av. Río Iguazú, Puerto Iguazú, Misiones, Argentina'},
 {'name': 'Argentina trip!',
  'label': 'Default',
  'start': datetime.date(2024, 5, 23),
  'end': datetime.date(2024, 6, 7),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Iguazu National Park',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 3, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 3, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 6.75,
  'minutes': 405.0,
  'location': 'Iguazú National Park, Ruta 101 Km 142, N3370 Puerto Iguazú, Misiones, Argentina'},
 {'name': 'Buenos Aires, Argentina',
  'label': 'Default',
  'start': datetime.date(2024, 5, 24),
  'end': datetime.date(2024, 5, 27),
  'hours': 0.0,
  'minutes': 0.0,
  'location': 'Buenos Aires, Argentina'},
 {'name': 'El Calafate, Argentina',
  'label': 'Default',
  'start': datetime.date(2024, 5, 26),
  'end': datetime.date(2024, 5, 31),
  'hours': 0.0,
  'minutes': 0.0,
  'location': 'El Calafate, Santa Cruz Province, Argentina'},
 {'name': 'Iguazu, Argentina',
  'label': 'Default',
  'start': datetime.date(2024, 6, 3),
  'end': datetime.date(2024, 6, 5),
  'hours': 0.0,
  'minutes': 0.0,
  'location': 'Iguazú Department, Misiones Province, Argentina'},
 {'name': 'Buenos Aires, Argentina',
  'label': 'Default',
  'start': datetime.date(2024, 6, 4),
  'end': datetime.date(2024, 6, 6),
  'hours': 0.0,
  'minutes': 0.0,
  'location': 'Buenos Aires, Argentina'},
 {'name': 'Glacier cruise',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 27, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 27, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 8.5,
  'minutes': 510.0,
  'location': 'Argentino Lake, Santa Cruz Province, Argentina'},
 {'name': 'Sick day',
  'label': 'Default',
  'start': datetime.date(2024, 5, 28),
  'end': datetime.date(2024, 5, 29),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Bus to Puerto Natales',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 29, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 29, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': 'Puerto Natales, Natales, Magallanes and Chilean Antarctica, Chile'},
 {'name': 'Torres del Paine Drive',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 30, 7, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 30, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 8.5,
  'minutes': 510.0,
  'location': 'Cordillera del Paine, Torres de Paine, Magallanes and Chilean Antarctica, Chile'},
 {'name': 'Torres del Paine hike',
  'label': 'Default',
  'start': datetime.datetime(2024, 5, 31, 7, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 31, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 8.5,
  'minutes': 510.0,
  'location': 'Cordillera del Paine, Torres de Paine, Magallanes and Chilean Antarctica, Chile'},
 {'name': 'Bus to El Calafate',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 1, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 1, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': 'Puerto Natales, Natales, Magallanes and Chilean Antarctica, Chile'},
 {'name': 'Puerto Natales, Chile',
  'label': 'Default',
  'start': datetime.date(2024, 5, 29),
  'end': datetime.date(2024, 6, 2),
  'hours': 0.0,
  'minutes': 0.0,
  'location': 'Puerto Natales, Natales, Magallanes and Chilean Antarctica, Chile'},
 {'name': 'El Calafate, Argentina',
  'label': 'Default',
  'start': datetime.date(2024, 6, 1),
  'end': datetime.date(2024, 6, 3),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Walk in Iguazu city center',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 4, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 4, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Puerto Iguazú, Misiones Province, Argentina'},
 {'name': 'Dinner w/ family, 外婆外公, Flora',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 8, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 8, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Feast Buffet, 1707 N Fry Rd, Katy, TX 77449, USA'},
 {'name': 'Deliver wontons to Waipo + HEB trip',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 6, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 6, 20, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Deliver chicken to 外婆',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 9, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 9, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Orientation cont. (Q&A)',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 10, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 13, 43, tzinfo=tzoffset(None, -18000)),
  'hours': 0.21666666666666667,
  'minutes': 13.0,
  'location': None},
 {'name': '1 on 1 w/ Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 18, 11, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Visit Waipo to fill out I-9 sec. 2',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 10, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 20, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'AI Consulting Overview & Onboarding',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 11, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': '1 on 1 w/ Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 11, 11, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Team Skills, Project Need',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 12, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 12, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 13, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 14, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 14, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 14, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 14, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Dinner w/ family, Liang, Logan, Luke',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 16, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 16, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Gym (back and bi) ',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 17, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Alex weekend',
  'label': 'Family/Friends',
  'start': datetime.date(2024, 7, 5),
  'end': datetime.date(2024, 7, 7),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Lunch w/ grandparents, Liang, Logan, Luke',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 22, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 22, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': '10 Seconds Yunnan Rice Noodle'},
 {'name': 'Typhoon Texas w/ Liang, Logan, Luke',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 23, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 23, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 24, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 6, 24, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': '1-on-1 w/ Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 25, 13, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 14, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 25, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Presidential debate',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 6, 27, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 28, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 28, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Logan and Luke weekend',
  'label': 'Family/Friends',
  'start': datetime.date(2024, 6, 29),
  'end': datetime.date(2024, 7, 1),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'FaceTime Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 29, 1, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 29, 3, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'FaceTime Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 6, 30, 1, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 30, 3, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 1, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': '1-on-1 w/ Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 2, 11, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'SKLZ Catch-up',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 2, 13, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'PAID HOLIDAY',
  'label': 'Work',
  'start': datetime.date(2024, 7, 4),
  'end': datetime.date(2024, 7, 5),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 2, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Meet w/ Aaron (Aero GSC intro)',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 3, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 3, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': "Hang out at 爷爷奶奶's",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 4, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 4, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': "Chenlu's birthday lunch",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 4, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 4, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Feast Buffet, 1707 N Fry Rd, Katy, TX 77449, USA'},
 {'name': 'Alex arrives',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 5, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 5, 14, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': '26149 Katy Freeway (Timewise Convenience Store / Shell gas station)'},
 {'name': 'Hang out w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 5, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 6, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Lunch ish w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 5, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 5, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'H Mart, 23119 Colonial Pkwy bldg b, Katy, TX 77449, USA'},
 {'name': "Trader Joe's run",
  'label': 'Default',
  'start': datetime.datetime(2024, 7, 7, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 7, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': "Trader Joe's, 2717 Commercial Center Blvd, Katy, TX 77494, USA"},
 {'name': 'Drop Alex off',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 7, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 7, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Poker w/ Jiant, Justin, Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 6, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 7, 1, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'Dinner w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 6, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 6, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Andretti w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 6, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 6, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Andretti Indoor Karting & Games Katy, Grand W Blvd #1230, Katy, TX 77449, USA'},
 {'name': 'Dessert & Kinokuniya w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 6, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 6, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'SOMISOMI, 23330 Grand Cir Blvd Suite 150, Katy, TX 77449, USA'},
 {'name': 'Lunch w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 6, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 6, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Zake Sushi & Ramen, 23119 Colonial Pkwy, Katy, TX 77449, USA'},
 {'name': 'Power outage - Beryl',
  'label': 'Default',
  'start': datetime.date(2024, 7, 8),
  'end': datetime.date(2024, 7, 9),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Family poker',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 8, 13, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 8, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'Family poker',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 8, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 8, 23, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': "Dinner at 外婆外公's",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 8, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 8, 20, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'Read',
  'label': 'Default',
  'start': datetime.datetime(2024, 7, 8, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 8, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 9, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Aero GSC intro',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 9, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'AI Consulting Bi-Weekly Team Mtg',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 12, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'AI Consulting Bi-Weekly Team Mtg',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 12, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'AI Consulting Bi-Weekly Team Mtg',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 10, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 10, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 12, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 12, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 15, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Meet w/ Tyler (impromptu)',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 16, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 13, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 16, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Dental appt.',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 7, 16, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Glo Dental Group - Cinco Ranch Family Dentistry, 22167 Westheimer Pkwy # 110, Katy, TX 77450, USA'},
 {'name': 'Foundations All Hands',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 17, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 18, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'tayLyrics w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 19, 14, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 19, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Lunch + shopping w/ 外婆',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 19, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 19, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Family poker',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 20, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 20, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Inside Out 2',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 7, 20, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 20, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'tayLyrics w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 22, 0, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Get C-130 data',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 22, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 22, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Meet w/ Issac w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 23, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': '1-on-1 w/ Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 23, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meet w/ Tyler (impromptu)',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 23, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 13, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'Flight to Houston (UA 1932)',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 14, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 23, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 4.333333333333333,
  'minutes': 260.0,
  'location': 'Seattle SEA'},
 {'name': 'Flight to Seattle (UA 2606)',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 11, 9, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 14, 23, tzinfo=tzoffset(None, -18000)),
  'hours': 4.716666666666667,
  'minutes': 283.0,
  'location': 'Houston IAH'},
 {'name': 'Aero overview w/ Aaron and Travis',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 24, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 24, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 24, 0, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 1, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 25, 0, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 1, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Meet w/ Aaron',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 25, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 15, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': None},
 {'name': 'Farewell Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 25, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'LAST DAY',
  'label': 'Work',
  'start': datetime.date(2024, 8, 8),
  'end': datetime.date(2024, 8, 9),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Home',
  'label': 'Default',
  'start': datetime.date(2024, 7, 16),
  'end': datetime.date(2024, 7, 17),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Home',
  'label': 'Default',
  'start': datetime.date(2024, 7, 15),
  'end': datetime.date(2024, 7, 16),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Home',
  'label': 'Default',
  'start': datetime.date(2024, 7, 17),
  'end': datetime.date(2024, 7, 18),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Home',
  'label': 'Default',
  'start': datetime.date(2024, 7, 18),
  'end': datetime.date(2024, 7, 19),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Home',
  'label': 'Default',
  'start': datetime.date(2024, 7, 19),
  'end': datetime.date(2024, 7, 20),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 25, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 26, 0, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 26, 1, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Dumbo appt.',
  'label': 'Appointments',
  'start': datetime.datetime(2024, 7, 27, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 27, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 26, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 26, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'tayLyrics (added leaderboard)',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 26, 19, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 26, 21, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 26, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 27, 1, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 2.9166666666666665,
  'minutes': 175.0,
  'location': None},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 27, 2, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 27, 3, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'tayLyrics deployment',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 28, 0, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 28, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Dinner w/ Jiant and Justin',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 7, 27, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 27, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Jinyuan'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 29, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 21, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.9166666666666667,
  'minutes': 115.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 7, 29, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'tayLyrics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 29, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 23, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'tayLyrics (restructuring)',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 30, 0, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 1, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Aero GSC tag up',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 30, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meet w/ Daria and Lance w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 30, 13, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 14, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 30, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'tayLyrics (restructuring cont.)',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 31, 0, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'tayLyrics - completed restructuring, redeployed',
  'label': 'Developing',
  'start': datetime.datetime(2024, 7, 31, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 23, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 2.6666666666666665,
  'minutes': 160.0,
  'location': None},
 {'name': 'tayLyrics - bug fixes and playing',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 1, 0, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 19, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 19, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 20, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 24, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 9, 22, tzinfo=tzoffset(None, -18000)),
  'hours': 0.36666666666666664,
  'minutes': 22.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 25, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 1, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 3, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 9, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 18, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 22, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 23, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 24, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 10, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 25, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 30, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 10, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 31, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Meet w/ Tyler',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 1, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': '2024 Intern Offboarding',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 1, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 1, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 13),
  'end': datetime.date(2024, 6, 14),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 14),
  'end': datetime.date(2024, 6, 15),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 17),
  'end': datetime.date(2024, 6, 18),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 18),
  'end': datetime.date(2024, 6, 19),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 19),
  'end': datetime.date(2024, 6, 20),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 20),
  'end': datetime.date(2024, 6, 21),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 24),
  'end': datetime.date(2024, 6, 25),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 25),
  'end': datetime.date(2024, 6, 26),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 26),
  'end': datetime.date(2024, 6, 27),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 27),
  'end': datetime.date(2024, 6, 28),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 6, 28),
  'end': datetime.date(2024, 6, 29),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 1),
  'end': datetime.date(2024, 7, 2),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 2),
  'end': datetime.date(2024, 7, 3),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 3),
  'end': datetime.date(2024, 7, 4),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 5),
  'end': datetime.date(2024, 7, 6),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 8),
  'end': datetime.date(2024, 7, 9),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 9),
  'end': datetime.date(2024, 7, 10),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 10),
  'end': datetime.date(2024, 7, 11),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 11),
  'end': datetime.date(2024, 7, 12),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 12),
  'end': datetime.date(2024, 7, 13),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 15),
  'end': datetime.date(2024, 7, 16),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 16),
  'end': datetime.date(2024, 7, 17),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 17),
  'end': datetime.date(2024, 7, 18),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 18),
  'end': datetime.date(2024, 7, 19),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 19),
  'end': datetime.date(2024, 7, 20),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 22),
  'end': datetime.date(2024, 7, 23),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 23),
  'end': datetime.date(2024, 7, 24),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 24),
  'end': datetime.date(2024, 7, 25),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 26),
  'end': datetime.date(2024, 7, 27),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 29),
  'end': datetime.date(2024, 7, 30),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 30),
  'end': datetime.date(2024, 7, 31),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 7, 31),
  'end': datetime.date(2024, 8, 1),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'TODO',
  'label': 'Work',
  'start': datetime.date(2024, 8, 1),
  'end': datetime.date(2024, 8, 2),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'internship_database - starting up',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 2, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 2, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'internship_database',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 2, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 2, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'internship_database',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 3, 0, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 3, 1, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'internship_database',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 3, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 3, 18, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'internship_database',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 3, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 3, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'internship_database',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 4, 0, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 4, 1, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Visit Rebecca and cats!',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 4, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 4, 16, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 3.1666666666666665,
  'minutes': 190.0,
  'location': None},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 4, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 4, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'HEB'},
 {'name': 'internship_database - implementing settings',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 4, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 4, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'internship_database',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 4, 22, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 4, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Aero GSC tag-up',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 11, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Aero GSC tag-up',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 18, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Aero GSC tag-up',
  'label': 'Work',
  'start': datetime.datetime(2024, 7, 25, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 15, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': None},
 {'name': 'MOVE-IN',
  'label': 'Default',
  'start': datetime.date(2024, 8, 17),
  'end': datetime.date(2024, 8, 18),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 5, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 5, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'lyriguessr - radiohead',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 6, 0, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 1, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'Aero GSC tag-up',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 6, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 6, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'lyriguessr - started up pipeline',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 6, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 23, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'lyriguessr - lyric pull class (messy ver.) done',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 7, 1, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 7, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'lyriguessr - played around w quarto and github pages',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 7, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 7, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Paper Club',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 13, 14, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'lyricguessr - misc.',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 8, 1, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 2, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': None},
 {'name': 'Performance eval. w/ Bruno',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 8, 12, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 12, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'lyriguessr',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 8, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Aero GSC tag-up',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 8, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 15, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': '1-on-1 w/ Lance',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 8, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 8, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'TMI (Tools, Methods, Implementation)',
  'label': 'Work',
  'start': datetime.datetime(2024, 6, 20, 14, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'END OF INTERNSHIP PRESENTATION w/ TYLER',
  'label': 'Work',
  'start': datetime.datetime(2024, 8, 1, 14, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'tayLyrics & lyriguessr',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 9, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'lyriguessr',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 10, 0, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 10, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'lyriguessr - website',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 10, 2, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 10, 2, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'posit::conf 2024',
  'label': 'Event',
  'start': datetime.date(2024, 8, 12),
  'end': datetime.date(2024, 8, 15),
  'hours': 0.0,
  'minutes': 0.0,
  'location': 'Seattle, WA, USA'},
 {'name': 'Chat w/ Cathy and family',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 9, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 9, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Lunch w/ Cathy and family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 10, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 10, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Shopping',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 10, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 10, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'lyriguessr - deployed waterparksGuessr',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 11, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 1, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Lyft to Airport',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 11, 6, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 7, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Opp. Scholar Lunch ',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 12, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 12, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Room 607'},
 {'name': 'Welcome Reception',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 12, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 12, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Columbia A/B'},
 {'name': 'Demo: Posit Connect Cloud',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 10, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'The Lounge Theater - Level 7'},
 {'name': 'Keynote Session: Updates from Posit',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Regency Ballroom'},
 {'name': 'Navigating A Career In Data Science',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 12, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 13, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia D'},
 {'name': 'Networking Lunch',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 13, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Regency Ballroom'},
 {'name': 'Making Decisions with Data',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 16, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia D'},
 {'name': 'Innovating with Shiny',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 16, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia C'},
 {'name': 'Keynote Session: Practical Tips for using Generative AI in Data Science Workflows | Melissa Van Bussel',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Regency Ballroom'},
 {'name': 'conf::carnival',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 23, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Columbia Ballroom'},
 {'name': 'Keynote Session: A future of data science | Allen Downey',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Regency Ballroom'},
 {'name': 'Data Engineering',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 12, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 13, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Elwha'},
 {'name': 'Networking Lunch',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 13, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Regency Ballroom'},
 {'name': 'Lunch and Learn hosted by ProCogia | Using GenAI in a Multilingual Environment',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 15, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': '500 | Quinault'},
 {'name': 'Demo: Collaboration between R & Python with Pins',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 13, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 14, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'The Lounge Theater - Level 7'},
 {'name': 'Data Science Case Studies',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia D'},
 {'name': "It's R And Python, Not R Or Python",
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Elwha'},
 {'name': 'Level Up Your Data Science Skills',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia C'},
 {'name': 'tidyverse Team Meetup',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Data Visualizations: Idea > Process > Sharing',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 16, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia A/B'},
 {'name': 'This Session Was Not Generated By AI',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 16, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Elwha'},
 {'name': 'Keynote Session: Data Wrangling [for Python or R] Like a Boss With DuckDB | Hannes Mühleisen',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Regency Ballroom'},
 {'name': 'Demo: Positron Talk Extended Q&A',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 10, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'The Lounge Theater - Level 7'},
 {'name': 'Seattle Art Museum',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 11, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Seattle Art Museum, 1300 1st Ave, Seattle, WA 98101, USA'},
 {'name': 'posit::conf check-in',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 11, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': '3rd floor'},
 {'name': 'Databases with R',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 12, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 12, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 8.0,
  'minutes': 480.0,
  'location': '402 | Chiliwack'},
 {'name': 'Check in',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 11, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Gym (back and bi?)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 12, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 12, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Hyatt Regency Seattle, 808 Howell St, Seattle, WA 98101, USA'},
 {'name': 'Get poke',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 11, 21, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 11, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'FOB Poke Bar, 220 Blanchard St, Seattle, WA 98121, USA'},
 {'name': 'Get pizza',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 12, 22, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 12, 22, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'MOD Pizza, 1302 6th Ave, Seattle, WA 98101, USA'},
 {'name': 'Machine Learning And Statistical Modeling',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 12, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 13, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Elwha'},
 {'name': 'Demo: Automate your reporting with Quarto dashboards and Posit Connect',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 14, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'The Lounge Theater - Level 7'},
 {'name': 'Quarto Team Meetup',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'The Lounge'},
 {'name': 'Beautiful And Effective Tables',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia C'},
 {'name': 'Automated Reporting With Quarto: Beyond Copy And Paste',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 13, 16, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 13, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia A/B'},
 {'name': 'lyriguessr - website customization',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 14, 1, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 2, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Stay at Hyatt Regency Seattle',
  'label': 'Default',
  'start': datetime.date(2024, 8, 11),
  'end': datetime.date(2024, 8, 15),
  'hours': 0.0,
  'minutes': 0.0,
  'location': '808 Howell Street, Seattle, WA 98101, USA'},
 {'name': "What's New with Shiny?",
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 12, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 13, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia A/B'},
 {'name': 'Birds of a Feather',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Level 5 Gallery'},
 {'name': 'Pour Some Glitter On It: Custom Quarto Outputs',
  'label': 'Event',
  'start': datetime.datetime(2024, 8, 14, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 14, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Columbia A/B'},
 {'name': 'lyriguessr - properly implemented lyric counts',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 15, 23, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 16, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'lyriguessr - UI fixes',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 16, 2, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 16, 3, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Packing',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 16, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 17, 0, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None},
 {'name': 'lyriguessr - logo',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 17, 0, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 17, 1, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Drive to Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 17, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Lunch w/ parents',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 17, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 17, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'UTea Pho, 2222 Rio Grande St b120, Austin, TX 78705, USA'},
 {'name': 'Dinner w/ Hannah and family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 17, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 17, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Shopping w/ mom, Hannah, and Laura',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 17, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 17, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Shopping w/ Hannah and Laura',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 18, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 18, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'Costco Wholesale, 4301 W William Cannon Dr BLDG A STE 100, Austin, TX 78749, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 18, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 18, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'tayLyrics w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 18, 21, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 18, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Shopping w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 19, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 19, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Hang out w Hannah, Lauren, and Sydney',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 20, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 21, 0, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 3.3333333333333335,
  'minutes': 200.0,
  'location': 'Sydney’s place'},
 {'name': 'Inspection form w Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 21, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 21, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Kenadi’s birthday dinner',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 20, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 20, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Board games w Hannah, Lauren, and Kenadi',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 20, 11, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 20, 14, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'Kenadi and Lauren’s place'},
 {'name': 'Coffee shop w Hannah, Sydney, and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 19, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 19, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Dear Austin Coffee Bar, 2310 S Lamar Blvd #102, Austin, TX 78704, USA'},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 21, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 21, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Shopping w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 21, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 21, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'H-E-B, 2652 Lake Austin Blvd, Austin, TX 78703, USA'},
 {'name': 'Board games w Hannah, Lauren, and Kenadi',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 21, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 22, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': 'Kenadi and Lauren’s place'},
 {'name': 'Thanksgiving Break',
  'label': 'Default',
  'start': datetime.date(2024, 11, 23),
  'end': datetime.date(2024, 12, 1),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 22, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 22, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'tayLyrics hosting',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 24, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 24, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Stroll around campus',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 24, 15, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 24, 16, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Attempt to reserve MLDS room',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 26, 11, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 12, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 26, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'The Standard renewals open',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 27, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 14, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Games w/ Kenadi, Lauren, Hannah, Sydney',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 26, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 0, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': "Kenadi and Lauren's place"},
 {'name': 'Pick up container for Lauren',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 27, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'University of Texas Student Services Building (SSB), 100 W Dean Keeton St, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 27, 20, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'The Standard Gym'},
 {'name': 'Shopping w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 8, 28, 17, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': None},
 {'name': 'Dinner w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 28, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Home!'},
 {'name': 'Get interviewed by Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 8, 30, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 30, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 29, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 29, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': "Canon's apartment party",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 9, 1, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 1, 23, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': '26 West, 600 W 26th St, Austin, TX 78705, USA'},
 {'name': 'lyriguessr - modularization, AWS',
  'label': 'Developing',
  'start': datetime.datetime(2024, 8, 30, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 30, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': 'WCP'},
 {'name': 'lyriguessr - finally got AWS stuff done!',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 1, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 1, 19, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'lyriguessr - misc. dev',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 2, 2, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 2, 4, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'a lil stroll',
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 2, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 2, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'lyriguessr - misc.',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 2, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 2, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'lyriguessr - website',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 3, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 3, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'lyriguessr - misc. site stuff',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 4, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 4, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'lyrigetter - added lana + misc.',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 5, 1, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 5, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': "Lauren's birthday dinner",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 9, 5, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 5, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'De Nada Cantina, 4715 E Cesar Chavez St, Austin, TX 78702, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 6, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': '99 Ranch run',
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 8, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 8, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': '99 Ranch Market, 6929 Airport Blvd #110, Austin, TX 78752, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 9, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'lyriguessr - bad omens AWS, clairo game',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 10, 1, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'lyriguessr - instances, website puns',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 10, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'lyriguessr promo',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 10, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'home'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 11, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 12, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 12, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'tayLyrics promo',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 13, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'tayLyrics promo',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 13, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'ADPi Tex-Mex Lunch w/ Hannah, Anthony, Sydney, Elsa',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 9, 13, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Alpha Delta Pi, 2620 Rio Grande St, Austin, TX 78705, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 13, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'lyriguessr / tayLyrics - analytics and logs',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 14, 1, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 14, 2, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': None},
 {'name': 'lyriguessr - log analytics',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 15, 2, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 15, 2, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': None},
 {'name': 'Katy Trip w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.date(2024, 10, 5),
  'end': datetime.date(2024, 10, 7),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Six Flags w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.date(2024, 10, 12),
  'end': datetime.date(2024, 10, 13),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': "Stroll + Trader Joe's run",
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 15, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 15, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'lyriguessr - acceptable answers',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 16, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 17, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 16, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 22, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'lyriguessr - TZ modification, etc.',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 18, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 18, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': "lyriguessr - deployed Sabrina's game, other AWS things, etc.",
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 19, 1, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 2, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Shopping w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 20, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'HEB'},
 {'name': 'Gym (back and bi!!)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 19, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 20, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Costco run w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 21, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 21, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Hang out w/ Calvin',
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 22, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 22, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'Gong Cha Dobie'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 23, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'lyriguessr - AWS stuff, scraping FOB, etc.',
  'label': 'Developing',
  'start': datetime.datetime(2024, 9, 24, 16, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 24, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi!)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 26, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 26, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'ADPi Tex-Mex Lunch w/ Hannah and Anthony',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 9, 27, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Alpha Delta Pi, 2620 Rio Grande St, Austin, TX 78705, USA'},
 {'name': 'Hang out w/ Kyler',
  'label': 'Default',
  'start': datetime.datetime(2024, 9, 27, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 28, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 6.5,
  'minutes': 390.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 30, 20, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 22, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 1, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 2, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'misc. developing',
  'label': 'Developing',
  'start': datetime.datetime(2024, 10, 3, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 3, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Drive to Katy w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 5, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 5, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Lunch w/ family and Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 5, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 5, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'JiBeiChuan Noodles & Dumplings 季北川花胶鸡米粉(Katy店), 23119 Colonial Pkwy B20, Katy, TX 77449, USA'},
 {'name': 'Asian town w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 5, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 5, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Kinokuniya, 23330 Grand Cir Blvd Suite 140, Katy, TX 77449, USA'},
 {'name': 'Drive to Austin w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 6, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 6, 23, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Chat w/ Garrick (Apple)',
  'label': 'Recruitment',
  'start': datetime.datetime(2024, 10, 3, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'ECJ 2.358'},
 {'name': 'Visit Rebecca & cats w/ mommy, Justin, Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 6, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 6, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Compatibility w/ family and Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 5, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 6, 0, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Pickleball w/ Jiant, Justin, Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 5, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 5, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Grand Lakes Phase Three, Houston, TX 77450, USA'},
 {'name': 'Make dumplings and wontons w/ mommy and Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 5, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 5, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 7, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 8, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 21, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day) w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 9, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 10, 20, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 22, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day II)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 11, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Drive to Austin w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 12, 23, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 13, 0, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Six Flags w/ Hannah!',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 12, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 12, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 11.0,
  'minutes': 660.0,
  'location': 'Six Flags Fiesta Texas'},
 {'name': 'Drive to San Antonio w/ Hannah',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 12, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 12, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'journal_analyzer - frequency table WC & streamlit wordcloud package',
  'label': 'Developing',
  'start': datetime.datetime(2024, 10, 14, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 13, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 2.6666666666666665,
  'minutes': 160.0,
  'location': 'WCP'},
 {'name': 'Online shopping...😅',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 14, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 17, 24, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4,
  'minutes': 24.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 14, 21, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'BISH meetup w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 14, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 20, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': "Cabo Bob's Burritos, 2828 Rio Grande St, Austin, TX 78705, USA"},
 {'name': 'journal_analyzer - text extraction pipeline',
  'label': 'Developing',
  'start': datetime.datetime(2024, 10, 15, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'journal_analyzer misc. stuff',
  'label': 'Developing',
  'start': datetime.datetime(2024, 10, 15, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 15, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 15, 22, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 23, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None},
 {'name': '100th gym day🥳! (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 16, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 16, 22, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 17, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 17, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'favoritesGuessr - game done!',
  'label': 'Developing',
  'start': datetime.datetime(2024, 10, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 14, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'WCP'},
 {'name': 'Gym (fuck around day II)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 18, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 20, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'SDS Party',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 18, 23, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 19, 2, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'Union on San Antonio, 2011 San Antonio St, Austin, TX 78705, USA'},
 {'name': 'Get into stadium & wait for game...w/ Hannah, Sydney, Kenadi, Elsa, Lauren',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 19, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 19, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': 'DKR-Texas Memorial Stadium'},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 20, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 20, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'H-E-B, 1000 E 41st St, Austin, TX 78751, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 21, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 22, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 22, 22, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 1, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 23, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 22, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Apple ADSP interview',
  'label': 'Recruitment',
  'start': datetime.datetime(2024, 10, 28, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Webex'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 24, 20, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 24, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w Authencia, Hannah, Batyr, Emma, Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 25, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 26, 4, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 5.25,
  'minutes': 315.0,
  'location': None},
 {'name': "Halloween Party @ Aley's",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 26, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 26, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Halloweekend night out w/ Hannah, Sydney, Elsa, Jenny, Kaitlyn',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 26, 23, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 27, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': 'Delta Upsilon'},
 {'name': 'Authencia visit!',
  'label': 'Family/Friends',
  'start': datetime.date(2024, 10, 25),
  'end': datetime.date(2024, 10, 26),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'PCL Booking',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 28, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL 5.110'},
 {'name': 'encyclopedia - intial setup and ideabank',
  'label': 'Developing',
  'start': datetime.datetime(2024, 10, 28, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 1, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': None},
 {'name': 'Meta Data Science Intern Interview',
  'label': 'Recruitment',
  'start': datetime.datetime(2024, 11, 13, 12, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 13, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Online'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 28, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Hang out w Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 10, 28, 22, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 1, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Target run',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 29, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Target, 2025 Guadalupe St STE 01-100, Austin, TX 78705, USA'},
 {'name': 'Apple ADSP 2nd round interview (behavioural) w/ Ashley and Audra',
  'label': 'Recruitment',
  'start': datetime.datetime(2024, 10, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'PCL booking',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 31, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL 5.524'},
 {'name': 'PCL booking',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL 3.110'},
 {'name': 'PCL booking',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 30, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL 3.106'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 29, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 30, 20, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Vote',
  'label': 'Default',
  'start': datetime.datetime(2024, 10, 31, 11, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'Union Building, Union Bldg, Austin, TX 78712, USA'},
 {'name': 'Apple ADSP 3rd round interview (technical) w/ Krittika and Vivian',
  'label': 'Recruitment',
  'start': datetime.datetime(2024, 10, 31, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 31, 20, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 22, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Integra Data Assessment',
  'label': 'Recruitment',
  'start': datetime.date(2024, 11, 4),
  'end': datetime.date(2024, 11, 5),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Hang out w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 1, 22, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 11, 2, 1, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 2.6666666666666665,
  'minutes': 160.0,
  'location': 'Skyloft, 507 W 23rd St, Austin, TX 78705, USA'},
 {'name': 'Sonic w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 2, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 11, 2, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Texas Ice Hockey vs A&M w/ Hannah and Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 2, 18, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 11, 2, 20, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': "Hang out w/ Justin, Justin's friends, and Marisa",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 3, 16, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 3, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.9166666666666667,
  'minutes': 115.0,
  'location': 'Home'},
 {'name': 'Hang out w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 3, 20, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 3, 23, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.8333333333333335,
  'minutes': 170.0,
  'location': 'Home'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 4, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 5, 20, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': "Hannah's IM volleyball game",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 6, 20, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 21, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'UT Recreational Sports Center, 2001 San Jacinto Blvd, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 6, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 23, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.9166666666666667,
  'minutes': 115.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 7, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 7, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Sal Khan Live at UT: How AI Will Save Education',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 15, 13, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 15, 14, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WILLIAM C. POWERS, JR. STUDENT ACTIVITY CENTER (WCP)'},
 {'name': 'Watch Gone Girl (2014)',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 11, 9, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 10, 0, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 2.4166666666666665,
  'minutes': 145.0,
  'location': None},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 10, 20, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 10, 21, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 11, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Target run',
  'label': 'Default',
  'start': datetime.datetime(2024, 11, 12, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 14, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Target, 2025 Guadalupe St STE 01-100, Austin, TX 78705, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 12, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 22, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 13, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'From Classrooms to College Sports',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 14, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WILLIAM C. POWERS, JR. STUDENT ACTIVITY CENTER (WCP)'},
 {'name': 'Shopping w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 14, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'HEB -> Costco'},
 {'name': 'Dinner w Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 14, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 19, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Ichiban, 7310 Burnet Rd, Austin, TX 78757, USA'},
 {'name': 'Pancake Night @ Pike w/ Hannah, Sydney, Lauren, Abby',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 14, 23, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 15, 0, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Pike'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 14, 20, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Hang out w/ Marisa',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 17, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 17, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'MÖGE TEE Austin, 2000 Guadalupe St, Austin, TX 78705, USA'},
 {'name': 'Bus to Katy',
  'label': 'Default',
  'start': datetime.datetime(2024, 11, 24, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': '462 Red River St, Austin, TX Austin, 78701'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 18, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 22, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 19, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'University Orchestra Concert w/ Anjie :)',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 19, 20, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 21, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Bates Recital Hall, 2406 Robert Dedman Dr, Austin, TX 78712, USA'},
 {'name': 'Super Mario w/ Hannah :)))',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 20, 1, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 20, 4, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'Home!'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 20, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 20, 22, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Super Mario w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 21, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 21, 1, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 21, 20, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 21, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Bus w/ Anjie',
  'label': 'Default',
  'start': datetime.datetime(2024, 11, 23, 8, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 8, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'UT West Mall Station (NB), 2247 Guadalupe St, Austin, TX 78712, USA'},
 {'name': 'Breakfast, Team Formation',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 23, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 11, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Welcome Kickoff',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 23, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 11, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Partner workshops',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 23, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Hacking starts',
  'label': 'Default',
  'start': datetime.datetime(2024, 11, 23, 12, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Doors open & breakfast',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 10, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Submissions due',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'First round judging',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 12, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Lunch',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 23, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 13, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Dinner',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 23, 19, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 23, 19, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Lunch',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 13, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Developing??',
  'label': 'Default',
  'start': datetime.datetime(2024, 11, 23, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 4, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 6.0,
  'minutes': 360.0,
  'location': None},
 {'name': 'Final round judging',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 14, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Keynote',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Winners announced',
  'label': 'Event',
  'start': datetime.datetime(2024, 11, 24, 15, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 24, 15, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 26, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 26, 21, 5, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Facetime Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 26, 23, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 27, 0, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 27, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 27, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Lunch + shopping w/ 外婆 and Justin',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 27, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 27, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Thanksgiving w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 28, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 28, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 7.0,
  'minutes': 420.0,
  'location': "外婆's place"},
 {'name': 'Family mahjong',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 29, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 29, 23, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Shopping w/ mommy',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 29, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 29, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 6.0,
  'minutes': 360.0,
  'location': 'Katy Mills, 5000 Katy Mills Cir, Katy, TX 77494, USA'},
 {'name': 'Gladiator 2 w/ Jiant and Justin',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 11, 30, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 30, 15, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'AMC Katy Mills 20, 5000 Katy Mills Cir #131, Katy, TX 77494, USA'},
 {'name': 'Lunch w/ Jiant and Justin',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 11, 30, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 30, 12, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Yan Tea Cafe, 23119 Colonial Pkwy Ste B-5, Katy, TX 77449, USA'},
 {'name': 'Drive to Austin',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 1, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 1, 20, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'Winter Break!',
  'label': 'Default',
  'start': datetime.date(2024, 12, 13),
  'end': datetime.date(2025, 1, 13),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Parking',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 2, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'San Antonio Garage, 2420 San Antonio St, Austin, TX 78705, USA'},
 {'name': 'Target run w/ Anjie, Olivia',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 2, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 17, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Target, 2025 Guadalupe St STE 01-100, Austin, TX 78705, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 2, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 22, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Costco + HEB run w/ Hannah, Anthony',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 2, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 20, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Costco Wholesale, 10401 Research Blvd, Austin, TX 78759, USA'},
 {'name': 'soniverse - grabbing my own top artists as sample data',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 3, 0, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 0, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'soniverse - started new project!',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 2, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 11, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'soniverse - sample data. PROJECT NOW ON HIATUS',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 3, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 10, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'spotify dashboard - started new project; built simple st app w user auth',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 3, 10, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Gym w/ Anjie',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 3, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 17, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 3, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Spotify dashboard (whilst running feature_generator for research)',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 4, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 19, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 4, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 22, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'spotify dashboard',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 5, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 5, 1, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Home'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 5, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 5, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Spotify dashboard',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 6, 1, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 2, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Hang out w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 7, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 7, 1, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Watch The Girl with the Dragon Tattoo',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 12, 7, 23, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 8, 2, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': '(Christmas) Shopping',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 8, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 8, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'Blue Genie Art Bazaar -> BookPeople -> New HEB'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 9, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 9, 22, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 10, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 10, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': '"Study" w/ Alex',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 6, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'PCL'},
 {'name': 'Dashboard - playing w lastfm API',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 11, 17, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'PCL'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 11, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 21, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': "Dashboard - lastfm API, this week's top tracks",
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 12, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 12, 12, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'PCL'},
 {'name': 'Gift shopping',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 12, 14, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 12, 18, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': 'Barton Creek Mall -> Austin Gift Company'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 12, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 12, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Drive to Katy',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 13, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 13, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'Dinner gathering w/ grandparents',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 14, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 14, 20, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gauchos Do Sul, 910 W Grand Pkwy S, Katy, TX 77494, USA'},
 {'name': 'Family photos',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 15, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 15, 15, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'JCPenney, 23523 Grand Cir Blvd, Katy, TX 77449, USA'},
 {'name': 'Dashboard',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 15, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 15, 18, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': None},
 {'name': 'Dashboard - top tracks implementation',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 15, 23, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 2, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': None},
 {'name': 'Dashboard - lasfm recently listened',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 16, 2, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 3, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Gift shopping w/ Justin',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 16, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 16, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'Katy Mills, 5000 Katy Mills Cir, Katy, TX 77494, USA'},
 {'name': 'Dashboard',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 16, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 16, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'HEB run',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 16, 21, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'H-E-B plus!, 6711 S Fry Rd, Katy, TX 77494, USA'},
 {'name': 'Gym closed',
  'label': 'Gym',
  'start': datetime.date(2024, 12, 24),
  'end': datetime.date(2024, 12, 25),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Gym closed',
  'label': 'Gym',
  'start': datetime.date(2024, 12, 25),
  'end': datetime.date(2024, 12, 26),
  'hours': 0.0,
  'minutes': 0.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 17, 19, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 17, 21, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 18, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 18, 21, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 19, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Family mahjong',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 20, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 21, 0, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'Board game night w/ Hannah, Lauren, Kenadi, Sydney, Dylan',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 21, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 22, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Drive to Katy',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 22, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 22, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Visit Waterloo Records',
  'label': 'Default',
  'start': datetime.datetime(2024, 12, 22, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 22, 14, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Waterloo Records & Video, 600 N Lamar Blvd, Austin, TX 78703, USA'},
 {'name': 'gcal_wrapped - intro & playing w API',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 23, 2, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 23, 2, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 23, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 23, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'gcal_wrapped - figured out basic authentication using gcsa',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 24, 1, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 24, 1, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Family Christmas Gathering',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 24, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 24, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 4.5,
  'minutes': 270.0,
  'location': None},
 {'name': 'Gift opening w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 24, 23, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 25, 0, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': None},
 {'name': 'Board game (Spy Alley) w/ family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 25, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 25, 20, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Squid Game S2 (eps. 1-4) w/ Jiant and Mommy',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 12, 26, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 26, 23, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'gcal_wrapped',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 27, 1, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 2, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 27, 14, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 15, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Dinner w/ Yanzi + family',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 27, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 20, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'Squid Game S2 (finished) w/ Jiant and Mommy',
  'label': 'Entertainment',
  'start': datetime.datetime(2024, 12, 27, 21, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 28, 0, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 2.9166666666666665,
  'minutes': 175.0,
  'location': None},
 {'name': "Lunch w/ Yinin's family",
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 12, 28, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 28, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 29, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 29, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 16, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 16, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 1, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Volleyball w/ Hannah + Lauren',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 1, 17, 22, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 18, 0, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Volleyball w/ Hannah',
  'label': 'Family/Friends',
  'start': datetime.datetime(2024, 2, 14, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'gcal_wrapped',
  'label': 'Developing',
  'start': datetime.datetime(2024, 12, 30, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 30, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 30, 19, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 30, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'}]
print(len(EVENTS_INFO))
EVENTS_INFO = [d for d in EVENTS_INFO if d["minutes"] > 0]
print(len(EVENTS_INFO))
791
717
import pandas as pd
events_df = pd.DataFrame(EVENTS_INFO)
events_df
name label start end hours minutes location
0 Wisdom teeth extraction Appointments 2024-01-11 08:00:00-06:00 2024-01-11 10:00:00-06:00 2.00 120.0 None
1 Consultation w/ Dr. Wiggins Appointments 2024-01-09 15:00:00-06:00 2024-01-09 16:00:00-06:00 1.00 60.0 801 S Mason Rd, Katy, TX 77450, USA
2 Lunch w/ family (inc. Jennifer) Family/Friends 2024-01-04 13:00:00-06:00 2024-01-04 14:45:00-06:00 1.75 105.0 Feast Buffet, 1707 N Fry Rd, Katy, TX 77449, USA
3 Eye appt. Appointments 2024-01-06 12:00:00-06:00 2024-01-06 13:00:00-06:00 1.00 60.0 None
4 Bus to Austin Default 2024-01-15 15:30:00-06:00 2024-01-15 18:30:00-06:00 3.00 180.0 None
... ... ... ... ... ... ... ...
712 Volleyball Family/Friends 2024-02-01 21:30:00-06:00 2024-02-01 22:45:00-06:00 1.25 75.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
713 Volleyball w/ Hannah + Lauren Family/Friends 2024-01-17 22:15:00-06:00 2024-01-18 00:00:00-06:00 1.75 105.0 None
714 Volleyball w/ Hannah Family/Friends 2024-02-14 21:30:00-06:00 2024-02-14 22:00:00-06:00 0.50 30.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
715 gcal_wrapped Developing 2024-12-30 16:00:00-06:00 2024-12-30 17:30:00-06:00 1.50 90.0 None
716 Gym (back and bi) Gym 2024-12-30 19:45:00-06:00 2024-12-30 21:30:00-06:00 1.75 105.0 Cross Creek Bend Fitness Center, 6450 Cross Cr...

717 rows × 7 columns

gym = events_df[events_df["label"] == "Gym"]
gym
name label start end hours minutes location
9 Gym w/ Hannah + Lauren Gym 2024-01-17 21:15:00-06:00 2024-01-17 22:15:00-06:00 1.000000 60.0 None
10 Gym w/ Hannah, Lauren, and Kenadi Gym 2024-01-23 20:00:00-06:00 2024-01-23 22:00:00-06:00 2.000000 120.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
11 Gym w/ Hannah, Lauren, and Kenadi Gym 2024-01-24 21:00:00-06:00 2024-01-24 23:00:00-06:00 2.000000 120.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
22 Gym w/ Hannah, Kenadi, and Lauren Gym 2024-01-29 21:15:00-06:00 2024-01-29 23:35:00-06:00 2.333333 140.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
23 Gym w/ Hannah, Kenadi, and Lauren Gym 2024-01-31 21:00:00-06:00 2024-01-31 23:00:00-06:00 2.000000 120.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
... ... ... ... ... ... ... ...
693 Gym (back and bi) Gym 2024-12-19 19:55:00-06:00 2024-12-19 21:35:00-06:00 1.666667 100.0 Cross Creek Bend Fitness Center, 6450 Cross Cr...
699 Gym (back and bi) Gym 2024-12-23 20:10:00-06:00 2024-12-23 21:45:00-06:00 1.583333 95.0 Cross Creek Bend Fitness Center, 6450 Cross Cr...
706 Gym (push and abs) Gym 2024-12-27 14:25:00-06:00 2024-12-27 15:50:00-06:00 1.416667 85.0 Cross Creek Bend Fitness Center, 6450 Cross Cr...
710 Gym (leg day) Gym 2024-12-29 16:00:00-06:00 2024-12-29 17:30:00-06:00 1.500000 90.0 Cross Creek Bend Fitness Center, 6450 Cross Cr...
716 Gym (back and bi) Gym 2024-12-30 19:45:00-06:00 2024-12-30 21:30:00-06:00 1.750000 105.0 Cross Creek Bend Fitness Center, 6450 Cross Cr...

141 rows × 7 columns

labels = events_df.groupby("label")[["minutes", "hours"]].sum()
labels
minutes hours
label
Appointments 600.0 10.000000
Default 17437.0 290.616667
Developing 5820.0 97.000000
Entertainment 1250.0 20.833333
Event 4650.0 77.500000
Family/Friends 25210.0 420.166667
Gym 13370.0 222.833333
Recruitment 225.0 3.750000
Work 2480.0 41.333333
palette_map = {
    "Default": "#446a46",
    "Family/Friends": "#8e24aa",
    "Event": "#33b679",
    "Gym": "#7986cb",
    "Recruitment": "#f4511e",
    "Developing": "#616161",
    "Appointments": "#f6bf26",
    "Work": "#d50000", 
    "Entertainment": "#3f51b5"
}
import plotly.graph_objects as go
import calendar
colors = [palette_map[lab] for lab in labels.index]
colors
['#f6bf26',
 '#446a46',
 '#616161',
 '#3f51b5',
 '#33b679',
 '#8e24aa',
 '#7986cb',
 '#f4511e',
 '#d50000']
fig = go.Figure(data=[go.Pie(labels=labels.index, 
                             values=labels["minutes"], 
                             hole=.2,
                             marker=dict(colors=colors,
                                         line=dict(color="black", width=1)),
                             hovertemplate=('<b>%{label}</b><br>' 
                                            'Minutes: %{value}<br>' 
                                            'Pct.: %{percent:.2%}<br>' 
                                            '<extra></extra>'))])
fig.update_layout(title = "Time Distribution by Label")
fig.show()
# gym breakdown
gym_dict = [d for d in EVENTS_INFO if d["label"] == "Gym"]
gym_dict
[{'name': 'Gym w/ Hannah + Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 17, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 23, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 24, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 29, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 23, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 1, 31, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 1, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 6, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 7, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 5, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 12, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 13, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah ',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 14, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 19, 21, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 23, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 20, 20, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 21, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 26, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 27, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 2, 28, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 6, 20, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 7, 20, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 4, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 13, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 13, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 18, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 23, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 19, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 21, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 25, 21, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 26, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Lauren, and Kenadi',
  'label': 'Gym',
  'start': datetime.datetime(2024, 3, 27, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 2, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Kenadi and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 3, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 9, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 10, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 16, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 16, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 17, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah, Kenadi, and Lauren',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 22, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 23, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Greg'},
 {'name': 'Gym w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym w/ Hannah (and Andrew)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 4, 29, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Greg'},
 {'name': 'Gym w/ Hannah (and Andrew)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 2, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Greg'},
 {'name': 'Gym',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 3, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Greg'},
 {'name': 'Gym (push day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 6, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 6, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 8, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 8, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 9, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 9, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (push day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 13, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 13, 21, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (push day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 20, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 20, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 21, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 21, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 5, 22, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 22, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 14, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 14, 20, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi) ',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 17, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 24, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 25, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 6, 28, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 28, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 1, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 2, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 3, 19, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 9, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 10, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 12, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 12, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 15, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 16, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 20, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 18, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 21, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 22, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 24, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 25, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 29, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 21, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.9166666666666667,
  'minutes': 115.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 7, 30, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 1, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 5, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 5, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 6, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 8, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'Cross Creek Bend Fitness Center'},
 {'name': 'Gym (back and bi?)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 12, 21, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 12, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Hyatt Regency Seattle, 808 Howell St, Seattle, WA 98101, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 26, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 27, 20, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'The Standard Gym'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 8, 29, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 29, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 3, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 4, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 6, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 21, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 9, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 11, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 12, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 12, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 13, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 16, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 22, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 18, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi!!)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 19, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 20, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 23, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 24, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi!)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 26, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 26, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 9, 30, 20, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 22, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 1, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 2, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 3, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 7, 21, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 8, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 21, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day) w/ Hannah',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 9, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 10, 20, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 22, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day II)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 11, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 14, 21, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 22, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 15, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': '100th gym day🥳! (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 16, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 17, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 17, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day II)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 18, 19, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 20, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 21, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 21, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 22, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 23, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 22, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 24, 20, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 24, 22, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 28, 20, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 29, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 30, 20, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 22, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 10, 31, 20, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 22, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 4, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 5, 20, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 6, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 23, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.9166666666666667,
  'minutes': 115.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 7, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 7, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (fuck around day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 10, 20, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 10, 21, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 11, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 12, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 22, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 13, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 14, 20, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Gregory Gymnasium'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 18, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 22, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 19, 21, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 20, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 20, 22, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 21, 20, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 21, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 26, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 26, 21, 5, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 11, 27, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 27, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 2, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 22, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 3, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 22, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 4, 21, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 22, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 5, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 5, 22, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 9, 21, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 9, 22, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 10, 20, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 10, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 11, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 21, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 12, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 12, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 16, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 16, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 17, 19, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 17, 21, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 18, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 18, 21, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 19, 19, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 21, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 23, 20, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 23, 21, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5833333333333333,
  'minutes': 95.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (push and abs)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 27, 14, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 27, 15, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (leg day)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 29, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 29, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'},
 {'name': 'Gym (back and bi)',
  'label': 'Gym',
  'start': datetime.datetime(2024, 12, 30, 19, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 30, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA'}]
gym_dict[0]["start"].weekday()
2
calendar.day_name[2]
'Wednesday'
[i for i in calendar.day_name]
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
[0] * 7
[0, 0, 0, 0, 0, 0, 0]
weekday_dict = dict(zip([i for i in calendar.day_name], [0] * 7))

for dic in gym_dict: 
    
    day_of_week = calendar.day_name[dic["start"].weekday()]
    weekday_dict[day_of_week] += 1

weekday_dict
{'Monday': 38,
 'Tuesday': 33,
 'Wednesday': 34,
 'Thursday': 24,
 'Friday': 10,
 'Saturday': 0,
 'Sunday': 2}
week_colors = ["#C96868", "#FFAD60", "#FADFA1", "#96CEB4", "#B7C9F2", "#D8B4F8", "#F8BDEB"]

fig = go.Figure([go.Bar(x=list(weekday_dict.keys()), 
                        y=list(weekday_dict.values()),
                        marker=dict(color=week_colors,
                                    line=dict(color="black", width=1.5)))],
                layout=dict(barcornerradius=15))

fig.update_layout(title = "Gym Sessions by Day of Week")
fig.show()
gym.groupby("location")[["minutes", "hours"]].sum()
minutes hours
location
Cross Creek Bend Fitness Center 735.0 12.250000
Cross Creek Bend Fitness Center, 6450 Cross Creek Bend Ln, Fulshear, TX 77441, USA 3365.0 56.083333
Greg 285.0 4.750000
Gregory Gymnasium 965.0 16.083333
Gregory Gymnasium, 2101 Speedway, Austin, TX 78712, USA 7725.0 128.750000
Hyatt Regency Seattle, 808 Howell St, Seattle, WA 98101, USA 60.0 1.000000
The Standard Gym 85.0 1.416667
labels
minutes hours
label
Appointments 600.0 10.000000
Default 17437.0 290.616667
Developing 5820.0 97.000000
Entertainment 1250.0 20.833333
Event 4650.0 77.500000
Family/Friends 25210.0 420.166667
Gym 13370.0 222.833333
Recruitment 225.0 3.750000
Work 2480.0 41.333333
gymtime = labels.loc[["Gym"]]
print(f"You spent {'{:,}'.format(int(gymtime['minutes'].values[0]))} minutes ({round(gymtime['hours'].values[0], 2)} hours) at the gym. Get a life. And some bitches. Lmao.")
You spent 13,370 minutes (222.83 hours) at the gym. Get a life. And some bitches. Lmao.

The below is me trying to figure out how to categorize my Blocks calendar, which is just “blocks” of time I set aside to study or do HW for classes. I want to look into how I split my time, but

blocks_id = "c_6a07e60a3e4530f1e890d77388f33ab8c7f6df1d78006011680e9548e2a1fb24@group.calendar.google.com"
BLOCKS = []
for e in calendar.get_events(calendar_id=blocks_id,
                                 time_min=START,
                                 time_max=END): 
    e_info = {
        "name": e.summary,
        "label": e.color_id,
        "start": e.start,
        "end": e.end,
        "hours": (e.end - e.start).seconds / 3600,
        "minutes": (e.end - e.start).seconds / 60,
        "location": e.location
    }
    BLOCKS.append(e_info)

BLOCKS
[{'name': 'Govt. intro activities',
  'label': None,
  'start': datetime.datetime(2024, 1, 17, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 12, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Govt. lectures, quiz, short assignment ',
  'label': None,
  'start': datetime.datetime(2024, 1, 18, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 18, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Interview prep',
  'label': None,
  'start': datetime.datetime(2024, 1, 19, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 19, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Interview prep and interviews',
  'label': None,
  'start': datetime.datetime(2024, 1, 22, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 22, 15, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': 'PCL 4.424'},
 {'name': 'Interview prep',
  'label': None,
  'start': datetime.datetime(2024, 1, 21, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 21, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Interview prep and interview',
  'label': None,
  'start': datetime.datetime(2024, 1, 24, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 14, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL 4.110'},
 {'name': 'Interview prep and interview',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 7, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 8, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL 3.110'},
 {'name': 'Statistics notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Statistics notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Govt. vocab',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Data Viz HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 24, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 1, 24, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 19, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'EER'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 1, 25, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 25, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 25, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 25, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Govt. quiz and assignment',
  'label': None,
  'start': datetime.datetime(2024, 1, 26, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 26, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 27, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 27, 0, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 28, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 28, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'SZB 3.814'},
 {'name': 'Probability review',
  'label': None,
  'start': datetime.datetime(2024, 1, 29, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': "Order Tiff's Treats for MLDS",
  'label': None,
  'start': datetime.datetime(2024, 1, 29, 15, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 29, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 30, 8, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 30, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Stats HW Q1',
  'label': None,
  'start': datetime.datetime(2024, 1, 30, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 30, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 30, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 30, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 31, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 31, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 31, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 1, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Finalize stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 1, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'PCL'},
 {'name': 'Databases review',
  'label': None,
  'start': datetime.datetime(2024, 2, 1, 17, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Dorm (floor)'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 8, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 12, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW (cont.)',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 13, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 15, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Dorm'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 14, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Finalize linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 21, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Govt. lectures, quiz, and assignment',
  'label': None,
  'start': datetime.datetime(2024, 2, 3, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 3, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'LM screening forms',
  'label': None,
  'start': datetime.datetime(2024, 2, 5, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 5, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 5, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Book appt.',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 11, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Go over stats notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 11, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Update tayLyrics ',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Review Naive Bayes',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 12, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL'},
 {'name': 'Review Naive Bayes + probability',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Finish data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 17, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER'},
 {'name': 'Stats HW Q3',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 2, 11, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 11, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER'},
 {'name': 'Data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 2, 13, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Databases project drafting',
  'label': None,
  'start': datetime.datetime(2024, 2, 13, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 2, 13, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 17, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'PCL'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 12, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 13, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL 4th'},
 {'name': 'Linguistics HW - perplexity',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'PCL'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 15, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Go over stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 15, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 11, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'GDC SDS Lounge'},
 {'name': 'Linguistics HW - perplexity',
  'label': None,
  'start': datetime.datetime(2024, 2, 15, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER'},
 {'name': 'Linguistics HW: perplexity',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 8, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Finish linguistics HW!',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 11, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 13, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Govt. sec. 5 vocab',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 17, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER'},
 {'name': 'Govt. Sec. 1 work',
  'label': None,
  'start': datetime.datetime(2024, 1, 17, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Govt. sec. 4 vocab',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Govt. sec. 4 lectures',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 19, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Govt. sec. 4 lecture video 3',
  'label': None,
  'start': datetime.datetime(2024, 2, 9, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 9, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Govt. sec. 4 lecture videos 4-5',
  'label': None,
  'start': datetime.datetime(2024, 2, 9, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 9, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Dorm'},
 {'name': 'Finish all govt. sec. 4 work',
  'label': None,
  'start': datetime.datetime(2024, 2, 10, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 10, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Home!'},
 {'name': 'Govt sec. 5 lectures',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 19, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'EER'},
 {'name': 'Finish up govt. work',
  'label': None,
  'start': datetime.datetime(2024, 2, 17, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 17, 16, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Update tayLyrics',
  'label': None,
  'start': datetime.datetime(2024, 2, 18, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Stats notes and revision w/ Hannah and Lauren',
  'label': None,
  'start': datetime.datetime(2024, 2, 18, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'Jasement'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 19, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 19, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 19, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Databases quizlet',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 8, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 9, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Databases review',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'Databases flashcards',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 18, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER'},
 {'name': 'Databases quizlet',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 19, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER'},
 {'name': 'Stats revision (last-minute)',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 8, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Data viz. peer grading',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 11, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 11, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'tayLyrics updates',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'tayLyrics updates',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 23, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP'},
 {'name': 'Govt. sec. 6 vocab',
  'label': None,
  'start': datetime.datetime(2024, 2, 23, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 11, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Govt. sec. 6 lectures, quiz, and assignment',
  'label': None,
  'start': datetime.datetime(2024, 2, 23, 11, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 13, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Naive Bayes recap',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 0, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 1, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 9, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 9, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 9, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Naive Bayes notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 14, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 16, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL'},
 {'name': 'Start databases project',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Naive Bayes demo',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 18, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER'},
 {'name': 'Naive Bayes demo',
  'label': None,
  'start': datetime.datetime(2024, 2, 27, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 9, 18, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3,
  'minutes': 18.0,
  'location': 'WCP'},
 {'name': 'Complete Naive Bayes demo',
  'label': None,
  'start': datetime.datetime(2024, 2, 27, 11, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 12, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'WCP'},
 {'name': 'Logistic regression revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 27, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL'},
 {'name': 'Logistic regression notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 28, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 28, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 22, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Logistic regression notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 8, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Finish up stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 11, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'GDC 7th'},
 {'name': 'Logistic regression notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Dorm'},
 {'name': 'Finalize data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 18, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 18, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER'},
 {'name': 'Linguistics Q1',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER'},
 {'name': 'Databases project 2',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 9, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP'},
 {'name': 'Finish databases project',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 11, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 11, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'Govt. sec. 7 vocab',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 15, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'PCL'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Finish up govt. sec. 7 work',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Logistic regression demo',
  'label': None,
  'start': datetime.datetime(2024, 3, 2, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 2, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 2, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 2, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Logistic regression demo',
  'label': None,
  'start': datetime.datetime(2024, 3, 3, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'LR cross-validation demo',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 9, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Perceptrons notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP'},
 {'name': 'Perceptrons notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'ECJ'},
 {'name': 'Stats HW Q1(a)(b)',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'Perceptrons notes (backprop.)',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 23, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 0, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Perceptrons notes (backprop.)',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Stats HW Q1(c)(d)',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 12, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'WCP'},
 {'name': 'Stats HW (rest of Q1)',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 14, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 15, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'Dorm'},
 {'name': 'Project planning',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Starting taylor_naive_bayes!',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Play around w/ taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 10, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Govt. exam 1',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 12, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 15, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 16, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'PCL'},
 {'name': 'Ochem work session w/ Hannah',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Welch'},
 {'name': 'taylor_naive_bayes script',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 23, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 0, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 7, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 9, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Linguistics work',
  'label': None,
  'start': datetime.datetime(2024, 3, 7, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 14, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Dorm'},
 {'name': 'CNS scholarship essays',
  'label': None,
  'start': datetime.datetime(2024, 3, 7, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER'},
 {'name': 'Opp. scholar application',
  'label': None,
  'start': datetime.datetime(2024, 3, 18, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 3, 18, 10, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 11, 7, tzinfo=tzoffset(None, -18000)),
  'hours': 0.2,
  'minutes': 12.0,
  'location': 'WCP'},
 {'name': 'Project proposal',
  'label': None,
  'start': datetime.datetime(2024, 3, 18, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Databases Quizlet',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 8, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Finish databases Quizlet',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP'},
 {'name': 'Databases project',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 11, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Twitter scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'Project test code',
  'label': None,
  'start': datetime.datetime(2024, 3, 20, 1, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Databases project queries',
  'label': None,
  'start': datetime.datetime(2024, 3, 20, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Data scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 20, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'EER'},
 {'name': 'Project code',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 0, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Presentation revision & prep.',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Dorm'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL'},
 {'name': 'Databases revision x scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Project proposal x scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'WCP'},
 {'name': 'Project proposal x scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Dorm'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Govt. work (all)',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Dorm'},
 {'name': 'Complete data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 3, 23, 3, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 23, 3, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP'},
 {'name': 'Scraping tweets + assigning results',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 11, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'SDS HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 11, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 12, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Scraping tweets + organizing repo',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Word embeddings notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Jackson School of Geoscience (JGB), 305 E 23rd St, Austin, TX 78712, USA'},
 {'name': 'Word embeddings notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 16, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 17, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL'},
 {'name': 'Tweet Naive Bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 18, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'PCL'},
 {'name': 'Nap',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Tweet Naive Bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Data preprocessing pipeline',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Complete data collection + cont. Naive Bayes ',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Tweets Naive Bayes (new)',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER'},
 {'name': 'Project cont. + SDS HW Q2',
  'label': None,
  'start': datetime.datetime(2024, 3, 27, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Gametime tweets analysis (study session w/ Hannah)',
  'label': None,
  'start': datetime.datetime(2024, 3, 27, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Project cont.',
  'label': None,
  'start': datetime.datetime(2024, 3, 27, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Welch'},
 {'name': 'Project peer grading',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 9, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'NB prelim. conclusions',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'Random project work',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': '3 Nights transposition',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Govt. sec. 9 vocab.',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Govt. video 9.1',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 9, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Govt. work (lectures + assignments)',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 11, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 12, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Dorm'},
 {'name': 'SDS HW (not done yet)',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Hypothesis testing notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 12, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP'},
 {'name': 'Matrix algebra notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 12, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 13, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Matrix algebra notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 9, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'Databases project',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 9, 21, tzinfo=tzoffset(None, -18000)),
  'hours': 0.18333333333333332,
  'minutes': 11.0,
  'location': 'WCP'},
 {'name': 'SDS HW (almost done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 10, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Databases project queries',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 11, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'Databases quiz 4 quizlet',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP'},
 {'name': 'Data viz. HW (not done - fix)',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 13, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Data viz. HW (finished - check and submit tmr)',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 14, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Dorm'},
 {'name': 'Databases quizlet (done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 16, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Welch'},
 {'name': 'Go through Quizlet',
  'label': None,
  'start': datetime.datetime(2024, 4, 4, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 4, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'posit::conf registration',
  'label': None,
  'start': datetime.datetime(2024, 4, 4, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 4, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'Scraping genius lyrics',
  'label': None,
  'start': datetime.datetime(2024, 4, 4, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 4, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Databases quiz review',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP'},
 {'name': 'Govt. sec. 10 vocab.',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Govt. lectures 10.1 - 10.5',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP'},
 {'name': 'Finish govt. work',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 20, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'Dorm'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 4, 6, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 6, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Course planning',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 10, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'Databases project (not done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 11, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'MLDS presentation',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Dorm'},
 {'name': 'Miscellaneous databases + SDS + MLDS work',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Presentation overview',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 8, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 8, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP'},
 {'name': 'Waterparks lyrics scraping',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Research comp. linguistics labs',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 11, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Presentation practice',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 17, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER'},
 {'name': 'Databases project',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 17, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER'},
 {'name': 'Databases project (I give up)',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 20, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Waterparks lyrics data cleaning',
  'label': None,
  'start': datetime.datetime(2024, 4, 10, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 10, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Stats revision (done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 10, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA'},
 {'name': 'Data viz. HW (not done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 11, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 11, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Registration planning',
  'label': None,
  'start': datetime.datetime(2024, 4, 11, 11, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 12, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Govt. sec. 11 vocab.',
  'label': None,
  'start': datetime.datetime(2024, 4, 12, 11, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 12, 11, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Govt. sec. 11 work (all)',
  'label': None,
  'start': datetime.datetime(2024, 4, 12, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 12, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Linguistics research x project account IDs',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP'},
 {'name': 'Scraping more tweets',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 11, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 12, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Scraping x data viz. project ',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Data viz. project 3',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 13, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 13, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Scraping x data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Dorm'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 4, 16, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 16, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 16, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 16, 12, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'WCP'},
 {'name': 'MLDS invoice',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 12, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 12, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Linguistics HW (one Q left)',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Stats HW (generally done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP '},
 {'name': 'Linguistics HW (finished) + project',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP'},
 {'name': 'Go over HW w/ Anjie',
  'label': None,
  'start': datetime.datetime(2024, 4, 18, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 18, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'GDC 7th'},
 {'name': 'Data viz. project (done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 18, 17, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 18, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'EER'},
 {'name': 'Stats HW (finished!)',
  'label': None,
  'start': datetime.datetime(2024, 4, 19, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Dorm'},
 {'name': 'Govt. vocab and lectures (1-2)',
  'label': None,
  'start': datetime.datetime(2024, 4, 19, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'Govt. work (finished)',
  'label': None,
  'start': datetime.datetime(2024, 4, 20, 3, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 20, 4, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Dorm'},
 {'name': 'Databases quiz 5 revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 21, 14, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 21, 15, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Linguistics project',
  'label': None,
  'start': datetime.datetime(2024, 4, 21, 15, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 21, 16, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'WCP'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 22, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Linguistics project (NB baselines and BERTweet)',
  'label': None,
  'start': datetime.datetime(2024, 4, 22, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 13, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': 'WCP'},
 {'name': 'Linguistics project (BERT and BERTweet)',
  'label': None,
  'start': datetime.datetime(2024, 4, 22, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA'},
 {'name': 'Linguistics final presentation',
  'label': None,
  'start': datetime.datetime(2024, 4, 23, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 9, 22, tzinfo=tzoffset(None, -18000)),
  'hours': 0.2,
  'minutes': 12.0,
  'location': 'WCP'},
 {'name': 'LIN project + presentation',
  'label': None,
  'start': datetime.datetime(2024, 4, 23, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Stats revision + F-tests notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 24, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 24, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA'},
 {'name': 'Data viz. peer grading',
  'label': None,
  'start': datetime.datetime(2024, 4, 25, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 25, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Govt. work (NOT done) x laundry',
  'label': None,
  'start': datetime.datetime(2024, 4, 26, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 26, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Govt. work (done!)',
  'label': None,
  'start': datetime.datetime(2024, 4, 27, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 27, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Govt. exam 2 (done w/ govt!!!)',
  'label': None,
  'start': datetime.datetime(2024, 4, 29, 12, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Study session w/ Hannah, Kenadi, Lauren, Sydney',
  'label': None,
  'start': datetime.datetime(2024, 4, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': 'Welch'},
 {'name': 'Jasement study time w/ Hannah (and Lauren)',
  'label': None,
  'start': datetime.datetime(2024, 4, 30, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'BERT models',
  'label': None,
  'start': datetime.datetime(2024, 5, 1, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': 'WCP'},
 {'name': 'Linguistics project (w/ Hannah and Lauren)',
  'label': None,
  'start': datetime.datetime(2024, 5, 2, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 16, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'WCP'},
 {'name': 'Study w/ Hannah, Canon, and Lauren',
  'label': None,
  'start': datetime.datetime(2024, 5, 3, 11, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'PCL'},
 {'name': 'Linguistics research notes + email Jessy',
  'label': None,
  'start': datetime.datetime(2024, 5, 9, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Fort Bend County Libraries - Cinco Ranch Branch, 2620 Commercial Center Blvd, Katy, TX 77494, USA'},
 {'name': 'Waterparks lyric scraper',
  'label': None,
  'start': datetime.datetime(2024, 5, 20, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 20, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'Waterparks lyrics game',
  'label': None,
  'start': datetime.datetime(2024, 5, 21, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 21, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Waterparks lyrics game',
  'label': None,
  'start': datetime.datetime(2024, 5, 21, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 21, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'Waterparks lyrics game x read JURPA revision',
  'label': None,
  'start': datetime.datetime(2024, 5, 22, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 22, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Book posit::conf hotel',
  'label': None,
  'start': datetime.datetime(2024, 6, 7, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 7, 12, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None},
 {'name': 'Misc. logistics',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 11, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None},
 {'name': 'AI Factory workspaces',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 11, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'titanic workspace test',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 14, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'Meeting prep',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Meeting prep',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'Intro to mistral course',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 14, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': None},
 {'name': 'Finish intro to mistral course',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 14, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'Langchain course 1 (2 vids left)',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'Misc. - looking over projects, setting up GitLab, etc.',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Gitlab setup (not done)',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'sklz-navigator',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz-navigator',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Finish LangChain course 1',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 9, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None},
 {'name': 'Start prompting course',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'sklz: outline and meeting agenda',
  'label': None,
  'start': datetime.datetime(2024, 6, 13, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz: sklz class',
  'label': None,
  'start': datetime.datetime(2024, 6, 13, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None},
 {'name': 'sklz: sklz class',
  'label': None,
  'start': datetime.datetime(2024, 6, 13, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 14, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 14, 13, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 4.75,
  'minutes': 285.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 17, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 17, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 17, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 13, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 19, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 19, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 19, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 19, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 7.75,
  'minutes': 465.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 20, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 20, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.25,
  'minutes': 255.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 20, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 21, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 21, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 4.25,
  'minutes': 255.0,
  'location': None},
 {'name': 'internshipDatabase',
  'label': None,
  'start': datetime.datetime(2024, 6, 22, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 23, 1, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'tayLyrics -> streamlit',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 23, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 0, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 25, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 25, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 25, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 26, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 26, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 26, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 26, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 26, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 26, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 27, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 27, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 27, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 28, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 28, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 1, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 1, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.25,
  'minutes': 315.0,
  'location': None},
 {'name': None,
  'label': None,
  'start': datetime.datetime(2024, 7, 1, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 3, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 3, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 3, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'Export and Sensitive Info Training',
  'label': None,
  'start': datetime.datetime(2024, 7, 5, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 5, 9, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz: new hire profile',
  'label': None,
  'start': datetime.datetime(2024, 7, 5, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 5, 10, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': None},
 {'name': 'tayLyrics',
  'label': None,
  'start': datetime.datetime(2024, 7, 7, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 7, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 9, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 10, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.75,
  'minutes': 345.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 10, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 9, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None},
 {'name': 'sklz x Wifi / VPN issues',
  'label': None,
  'start': datetime.datetime(2024, 7, 9, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 12, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 12, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 8.0,
  'minutes': 480.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 15, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 15, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 15, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 17, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 17, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 17, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 6.0,
  'minutes': 360.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 18, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 18, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 18, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'Fix computer + sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 21, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 21, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'Aero GSC notes + sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 22, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 17, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 22, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 22, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 9, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 13, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 5.166666666666667,
  'minutes': 310.0,
  'location': None},
 {'name': 'sklz + aero gsc',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 25, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'aero gsc - spectral clustering prelim.',
  'label': None,
  'start': datetime.datetime(2024, 7, 25, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None},
 {'name': 'sklz + aero gsc',
  'label': None,
  'start': datetime.datetime(2024, 7, 25, 10, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.916666666666667,
  'minutes': 295.0,
  'location': None},
 {'name': 'setting up new workspace + sklz ',
  'label': None,
  'start': datetime.datetime(2024, 7, 26, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 26, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'aero gsc - clustering and PCA',
  'label': None,
  'start': datetime.datetime(2024, 7, 29, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 29, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'aero gsc - 3d clustering',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 31, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.25,
  'minutes': 315.0,
  'location': None},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 7, 31, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'aero gsc - clustering cont.',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None},
 {'name': 'sklz + presentation prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 31, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'aero gsc - clustering cont.',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'misc.',
  'label': None,
  'start': datetime.datetime(2024, 8, 2, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 2, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'misc. + developing',
  'label': None,
  'start': datetime.datetime(2024, 8, 5, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 5, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 9.5,
  'minutes': 570.0,
  'location': None},
 {'name': 'sklz - update skills job',
  'label': None,
  'start': datetime.datetime(2024, 8, 6, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'sklz - update skills job',
  'label': None,
  'start': datetime.datetime(2024, 8, 6, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 6, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 7, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 7, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 6.5,
  'minutes': 390.0,
  'location': None},
 {'name': 'aero gsc',
  'label': None,
  'start': datetime.datetime(2024, 8, 7, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 7, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 8, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 8, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None},
 {'name': 'misc',
  'label': None,
  'start': datetime.datetime(2024, 8, 8, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Gone to Engineering + registration prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 21, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 21, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'MLDS Data Viz. presentation',
  'label': None,
  'start': datetime.datetime(2024, 8, 22, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 22, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None},
 {'name': 'Data viz. presentation cont.',
  'label': None,
  'start': datetime.datetime(2024, 8, 22, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 22, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None},
 {'name': 'tayLyrics - AWS',
  'label': None,
  'start': datetime.datetime(2024, 8, 23, 2, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 23, 3, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None},
 {'name': 'Misc. prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'William C. Powers Student Activity Center, 2201 Speedway, Austin, TX 78712, USA'},
 {'name': "Edit Justin's essays",
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'William C. Powers Student Activity Center, 2201 Speedway, Austin, TX 78712, USA'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 11, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 11, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Life Science Library, Main, 2400 Inner Campus Drive #220, Austin, TX 78712, USA'},
 {'name': 'tayLyrics - added hints limit',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA'},
 {'name': 'MLDS corporate package',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'EER'},
 {'name': 'MLDS intro stuff',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 10, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'C S 309 intro modules (not done)',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Update resume',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'C S 309 - completed intro module',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 17, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER'},
 {'name': 'Update MLDS hornslink',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 10, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'Read + annotate paper',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 11, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP'},
 {'name': 'Read and annotate other paper',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 12, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 12, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Research notes',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 12, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP'},
 {'name': 'MLDS officer meeting prep. + first meeting prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 23, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Research ideas',
  'label': None,
  'start': datetime.datetime(2024, 8, 29, 8, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 29, 9, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'SDS 336 HW1',
  'label': None,
  'start': datetime.datetime(2024, 8, 29, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 29, 16, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER'},
 {'name': 'SDS 364 HW',
  'label': None,
  'start': datetime.datetime(2024, 9, 3, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 9, 3, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'Research work',
  'label': None,
  'start': datetime.datetime(2024, 9, 4, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Research stuff - figured out scraper',
  'label': None,
  'start': datetime.datetime(2024, 9, 4, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'EER'},
 {'name': 'Misc. - MLDS and lyriguessr stuff',
  'label': None,
  'start': datetime.datetime(2024, 9, 5, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 5, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Misc. + UTCS setup',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'SDS 334 quiz 2',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Research approach',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Misc. - lyriguessr and tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 12, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP'},
 {'name': 'lyriguessr - promo graphics',
  'label': None,
  'start': datetime.datetime(2024, 9, 8, 1, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 8, 3, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None},
 {'name': 'Scheduling',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 9, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': "Place Potbelly's order",
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Research - filtering parent tweets',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'WCP'},
 {'name': 'Research - scraping game events w/ Hannah and Sydney',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'The Union (outside)'},
 {'name': 'Research - scraping replies',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Engineering Education and Research Center (EER), 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'C S 326E EX0 + C S 309 pre-class work (NOT DONE)',
  'label': None,
  'start': datetime.datetime(2024, 9, 10, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class modules (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 10, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER'},
 {'name': 'lyriguessr promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 10, 17, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER w/ Hannah'},
 {'name': 'Misc. - lyriguessr promo, Apple app., Chevron email, etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'Internship apps',
  'label': None,
  'start': datetime.datetime(2024, 9, 11, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER'},
 {'name': 'OOEF',
  'label': None,
  'start': datetime.datetime(2024, 9, 11, 16, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'EER'},
 {'name': 'Misc. - tayLyrics promo, HTTP vids',
  'label': None,
  'start': datetime.datetime(2024, 9, 12, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 12, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'C S 309 HW1',
  'label': None,
  'start': datetime.datetime(2024, 9, 13, 10, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'SDS 336 Quiz 3',
  'label': None,
  'start': datetime.datetime(2024, 9, 13, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'C S 326E Hands-on DNS 1',
  'label': None,
  'start': datetime.datetime(2024, 9, 15, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 15, 19, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Misc. - MLDS catering & funds + schedule assignments, etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP'},
 {'name': 'lyriguessr - analytics, Sabrina dataset',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 11, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Misc. - lyriguessr promo, The Trade Desk app., C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 14, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'WCP'},
 {'name': 'Research - LLM wrapper',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 17, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'EER'},
 {'name': 'Research LLM + C S 309 readings (1 & 2)',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 18, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 18, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER'},
 {'name': 'Misc. - research LLM + lyriguessr dev.',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 0, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 2, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None},
 {'name': 'Misc. - C S 309 readings (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class modules (almost done) + research LLM',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Misc. - research stuff, codesignal practice, etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'EER'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Research - score-matching',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'tayLyrics promo (emailed Prof. Scala)',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'lyriguessr promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 17, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'C S 326E quizzes (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER'},
 {'name': 'OOEF & Invoice form',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 18, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'EER'},
 {'name': 'Misc. - lyriguessr',
  'label': None,
  'start': datetime.datetime(2024, 9, 19, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Misc. ',
  'label': None,
  'start': datetime.datetime(2024, 9, 19, 16, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 17, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'EER'},
 {'name': 'SDS 336 quiz 4 (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 20, 9, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'TTD CodeSignal (DAMN IT)',
  'label': None,
  'start': datetime.datetime(2024, 9, 20, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'Schedule assignments',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP'},
 {'name': 'waterparksGuessr updates + promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 10, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'Research - tweet filtering, location generalizing',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.8333333333333335,
  'minutes': 170.0,
  'location': 'WCP'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 13, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP'},
 {'name': 'Research - location mapping + waterparksGuessr promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 18, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': 'EER'},
 {'name': 'C S 309 pre-class module, misc. MLDS stuff',
  'label': None,
  'start': datetime.datetime(2024, 9, 24, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 10, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 24, 16, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER'},
 {'name': 'lyriguessr - tried to set up a MAIN analytics property but failed',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Research - cleaning tweets, looking for patterns',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 10, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 12, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'WCP'},
 {'name': 'MLDS stuff - reserved food card for social, completed OOEF for Tues.',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 15, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'SDS 336 project data setup etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 16, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'Research - examining trends, defining collectivism',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'Research - collectivism mapping, new wordclouds',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA'},
 {'name': 'Misc. - I forgot',
  'label': None,
  'start': datetime.datetime(2024, 9, 26, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 26, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'C S 326E EX1 & diagram',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'C S 309 HW2',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 10, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'SDS 336 quiz 5',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Research - modularizing parent tweet preprocessing / filtering',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 17, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER'},
 {'name': 'C S 326E project 1 (did nothing)',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'C S 326E textbook notes',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'C S 326E project (parse_server_info)',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'C S 326E project',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 16, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER'},
 {'name': 'Research - modularization of preprocessing',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 16, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 16, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 9, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 10, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 10, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 10, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'C S 326E project',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Email Apple',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'C S 326E project',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 12, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 13, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Research - tweet preprocessing, collectivism vs individualism, logistic regression',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 15, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.9166666666666665,
  'minutes': 175.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'OOEF & invoice form',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 18, 53, tzinfo=tzoffset(None, -18000)),
  'hours': 0.13333333333333333,
  'minutes': 8.0,
  'location': 'EER'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 3, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'internship_database - resources table',
  'label': None,
  'start': datetime.datetime(2024, 10, 3, 18, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER'},
 {'name': 'Misc. - C S 326E submissions, internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 4, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 4, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'SDS 336 quiz 6',
  'label': None,
  'start': datetime.datetime(2024, 10, 4, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 4, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Misc. developing + sabrinaGuessr promo',
  'label': None,
  'start': datetime.datetime(2024, 10, 4, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 4, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Misc. - internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 9, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'SP25 course planning',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 10, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 10, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'C S 326E revision (finished Ch. 1)',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP'},
 {'name': 'Networking revision',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER'},
 {'name': 'Networking revision (cont.)',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Networking revision (Ch. 2; not done)',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 17, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA'},
 {'name': 'Networking quizzes',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Networking revision (Ch. 2 DNS)',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Networking revision (finished Ch. 2, started Ch. 3)',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Networking revision (Ch. 3 done; started structured exam revision)',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 4.166666666666667,
  'minutes': 250.0,
  'location': 'WCP'},
 {'name': 'Networking revision (cheatsheet)',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 16, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'Research - looking into pronouns',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 18, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER'},
 {'name': 'Reading group OOEF, invoice form',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 18, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 18, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'EER'},
 {'name': 'Networking revision',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 9, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'Mezes Hall, The University of Texas at Austin, 154 W 21st St, Austin, TX 78712, USA'},
 {'name': 'Networking revision - filled cheat sheet',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'journal_analysis - example ',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 14, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'journal_analysis - started UI',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 16, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'SDS 336 quiz 7',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'SDS 336 quiz 7',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'C S 309 HW3',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'C S 309 HW3',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 13, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None},
 {'name': 'OOEF & invoice form',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 17, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': None},
 {'name': 'Misc. - assignments',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 9, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'NVIDIA student program app.',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': "Order Tiff's x2",
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'EER'},
 {'name': 'C S 309 reading',
  'label': None,
  'start': datetime.datetime(2024, 10, 15, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 10, 15, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 18, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER'},
 {'name': 'Misc. - C S 309 pre-class reflection, tayLyrics',
  'label': None,
  'start': datetime.datetime(2024, 10, 16, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP'},
 {'name': 'Research + SDS 336 project EDA',
  'label': None,
  'start': datetime.datetime(2024, 10, 16, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'WCP'},
 {'name': 'OOEFs and invoice forms',
  'label': None,
  'start': datetime.datetime(2024, 10, 17, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 17, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Email Jessica abt HEB Bakery',
  'label': None,
  'start': datetime.datetime(2024, 10, 18, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'SDS quiz 8',
  'label': None,
  'start': datetime.datetime(2024, 10, 18, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP'},
 {'name': 'Misc. - scheduling assignments, MLDS stuff',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 9, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Research - spurs preprocessing, nicknaming & NER',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP'},
 {'name': 'Misc. - research nicknames; MLDS HEB stuff',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 15, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 16, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER'},
 {'name': 'Research nicknames - outlined goals, mapped spurs nicknames',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP'},
 {'name': 'Misc. - research (club accounts)',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Respond to Apple',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 18, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER'},
 {'name': 'C S 309 videos (done)',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class reflection',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 10, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP'},
 {'name': 'Research - finding accounts, corresponding IDs',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 10, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.6666666666666665,
  'minutes': 160.0,
  'location': 'WCP'},
 {'name': 'Treasurer resources doc',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 16, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Research - tweetscraper',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'EER'},
 {'name': 'Research - resetting the scraping process',
  'label': None,
  'start': datetime.datetime(2024, 10, 24, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 24, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Misc. - scraping tweets, lounging, respond to Meta, etc.',
  'label': None,
  'start': datetime.datetime(2024, 10, 24, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 24, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'GDC'},
 {'name': 'Message Abby',
  'label': None,
  'start': datetime.datetime(2024, 10, 25, 10, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 25, 10, 28, tzinfo=tzoffset(None, -18000)),
  'hours': 0.13333333333333333,
  'minutes': 8.0,
  'location': 'WCP'},
 {'name': 'SDS 336 quiz 9 + C S 309 HW4',
  'label': None,
  'start': datetime.datetime(2024, 10, 25, 10, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 25, 12, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP'},
 {'name': 'Research - data analysis',
  'label': None,
  'start': datetime.datetime(2024, 10, 25, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 25, 13, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP'},
 {'name': 'Misc. - scheduling assignments, reply to recruiters, registration planning, etc.',
  'label': None,
  'start': datetime.datetime(2024, 10, 28, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 10, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'WCP'},
 {'name': 'Misc. - encyclopedia (intergroup bias)',
  'label': None,
  'start': datetime.datetime(2024, 10, 28, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Misc. - interview notes, encyclopedia',
  'label': None,
  'start': datetime.datetime(2024, 10, 28, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'EER'},
 {'name': 'Misc. - emails, linguistic intergroup bias',
  'label': None,
  'start': datetime.datetime(2024, 10, 29, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 10, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'Misc. - MLDS, C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 10, 29, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER'},
 {'name': 'Encylopedia',
  'label': None,
  'start': datetime.datetime(2024, 10, 30, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 9, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'Misc. - mostly SDS 336 project adding features (VADER + length) and labels',
  'label': None,
  'start': datetime.datetime(2024, 10, 30, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': 'WCP'},
 {'name': 'SDS 336 project - training RF + making slides',
  'label': None,
  'start': datetime.datetime(2024, 10, 30, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'PCL'},
 {'name': 'Misc. - msg. Venkat, SDS project presentation',
  'label': None,
  'start': datetime.datetime(2024, 10, 31, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Misc. - schedule assignments, MLDS, etc.',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 9, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Integra data assessment',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 10, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Research - Big Six nicknames',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 10, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP'},
 {'name': 'Research - nicknaming',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 18, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'EER'},
 {'name': 'Misc. - registration planning',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 9, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (not done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 10, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 16, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'Research - nicknames (other clubs)',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 18, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'EER'},
 {'name': 'Research - assigning scores + game info, player matching',
  'label': None,
  'start': datetime.datetime(2024, 11, 6, 9, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 13, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': 'WCP'},
 {'name': 'Research - cleaning player_identification',
  'label': None,
  'start': datetime.datetime(2024, 11, 6, 16, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 18, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'EER'},
 {'name': 'Registration prep',
  'label': None,
  'start': datetime.datetime(2024, 11, 7, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 7, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'SDS 336 quiz 11',
  'label': None,
  'start': datetime.datetime(2024, 11, 8, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 8, 17, 5, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Home'},
 {'name': 'C S 309 HW5',
  'label': None,
  'start': datetime.datetime(2024, 11, 8, 17, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 8, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Home'},
 {'name': 'MLDS NLP slides',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Home'},
 {'name': 'Schedule assignments',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 9, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP'},
 {'name': 'MLDS NLP slides',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 11, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'WCP'},
 {'name': 'Research - win probability',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 11, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 13, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0833333333333335,
  'minutes': 125.0,
  'location': 'WCP'},
 {'name': 'Research - win probability model features',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'EER'},
 {'name': 'Presentation run-through',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 10, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 10, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 11, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP'},
 {'name': 'Research - win prob. model',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP'},
 {'name': 'Presentation prep',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 16, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 17, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER'},
 {'name': 'Presentation prep',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 11, 13, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA'},
 {'name': 'Research - looking into restructuring model',
  'label': None,
  'start': datetime.datetime(2024, 11, 13, 17, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Home'},
 {'name': 'Misc. - project update, etc.',
  'label': None,
  'start': datetime.datetime(2024, 11, 14, 9, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'SDS 336 HW12',
  'label': None,
  'start': datetime.datetime(2024, 11, 14, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Home'},
 {'name': 'Schedule assignments, misc. tasks',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 9, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP'},
 {'name': 'SDS 336 paper presentation',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP'},
 {'name': 'Encyclopedia - adding ideas to ideabank',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 13, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP'},
 {'name': 'Research - LWP model (data manip.)',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 18, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 18, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'EER'},
 {'name': 'Research - LWP model',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA'},
 {'name': 'Presentation practice',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 9, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 9, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (not done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 10, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 16, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 17, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER'},
 {'name': 'Research - LWP model',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 17, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 18, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER'},
 {'name': 'Research - LWP model, scraping weekly standings',
  'label': None,
  'start': datetime.datetime(2024, 11, 20, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 20, 18, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA'},
 {'name': 'Research - scraping standings',
  'label': None,
  'start': datetime.datetime(2024, 11, 21, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 21, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'SDS 336 Quiz 13 w/ Anjie',
  'label': None,
  'start': datetime.datetime(2024, 11, 22, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 22, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Peter T. Flawn Academic Center (FAC), 2304 Whitis Ave, Austin, TX 78712, USA'},
 {'name': 'Misc. - scheduling assignments, etc.',
  'label': None,
  'start': datetime.datetime(2024, 12, 2, 9, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 9, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP'},
 {'name': 'SDS 336 project - encoding keywords',
  'label': None,
  'start': datetime.datetime(2024, 12, 2, 9, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 10, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 12, 3, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'Research - nickname stats, in-group/out-group stuff',
  'label': None,
  'start': datetime.datetime(2024, 12, 4, 12, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 14, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP'},
 {'name': 'Research + SDS 336 group project',
  'label': None,
  'start': datetime.datetime(2024, 12, 4, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA'},
 {'name': 'Research - in/out-group referrals',
  'label': None,
  'start': datetime.datetime(2024, 12, 5, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 5, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP'},
 {'name': 'C S 309 Ethics Project',
  'label': None,
  'start': datetime.datetime(2024, 12, 6, 13, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 16, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 3.6666666666666665,
  'minutes': 220.0,
  'location': 'Life Science Library, Main, 2400 Inner Campus Drive #220, Austin, TX 78712, USA'},
 {'name': 'C S 309 Ethics Project cont.',
  'label': None,
  'start': datetime.datetime(2024, 12, 6, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA'},
 {'name': 'Visa apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 6, 19, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 19, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA'},
 {'name': 'Misc. - SDS 336 report, recruiting',
  'label': None,
  'start': datetime.datetime(2024, 12, 9, 10, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 9, 15, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 4.083333333333333,
  'minutes': 245.0,
  'location': 'WCP'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 9, 18, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 9, 19, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER'},
 {'name': 'Misc. SDS 336 report, LinkedIn networking',
  'label': None,
  'start': datetime.datetime(2024, 12, 10, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 10, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'WCP'},
 {'name': 'Misc. - LinkedIn networking + research (finally made in/out-group nicknaming plots)',
  'label': None,
  'start': datetime.datetime(2024, 12, 10, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 10, 17, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 2.8333333333333335,
  'minutes': 170.0,
  'location': 'PCL w/ Christine and Anjie'},
 {'name': 'Misc. - research + LinkedIn networking',
  'label': None,
  'start': datetime.datetime(2024, 12, 11, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'PCL'},
 {'name': 'Edit report',
  'label': None,
  'start': datetime.datetime(2024, 12, 11, 19, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 19, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None},
 {'name': 'Misc. - Visa email',
  'label': None,
  'start': datetime.datetime(2024, 12, 12, 10, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 12, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'PCL'},
 {'name': 'Dashboard',
  'label': None,
  'start': datetime.datetime(2024, 12, 17, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 17, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Internship apps',
  'label': None,
  'start': datetime.datetime(2024, 12, 18, 2, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 18, 2, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None},
 {'name': 'Networking + internship apps. (5)',
  'label': None,
  'start': datetime.datetime(2024, 12, 17, 2, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 17, 3, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 19, 10, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Fort Bend County Libraries - Cinco Ranch Branch, 2620 Commercial Center Blvd, Katy, TX 77494, USA'},
 {'name': 'LinkedIn networking + cold emailing',
  'label': None,
  'start': datetime.datetime(2024, 12, 19, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 17, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 3.1666666666666665,
  'minutes': 190.0,
  'location': None},
 {'name': 'Linkedin networking',
  'label': None,
  'start': datetime.datetime(2024, 12, 20, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 20, 17, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None},
 {'name': 'Linkedin networking + cold emailing',
  'label': None,
  'start': datetime.datetime(2024, 12, 21, 1, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 21, 2, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 29, 2, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 29, 3, 5, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None}]
print(len(BLOCKS))
BLOCKS = [e for e in BLOCKS if e["name"] != None]
print(len(BLOCKS))
629
628
pd.DataFrame(BLOCKS)["name"].unique()
array(['Govt. intro activities',
       'Govt. lectures, quiz, short assignment ', 'Interview prep',
       'Interview prep and interviews', 'Interview prep and interview',
       'Statistics notes', 'Govt. vocab', 'Data Viz HW', 'Govt. lectures',
       'Stats notes', 'Govt. quiz and assignment', 'Stats HW',
       'Probability review', "Order Tiff's Treats for MLDS",
       'Stats HW Q1', 'Linguistics HW', 'Data viz. HW',
       'Finalize stats HW', 'Databases review', 'Databases revision',
       'Linguistics HW (cont.)', 'Laundry', 'Finalize linguistics HW',
       'Govt. lectures, quiz, and assignment', 'LM screening forms',
       'Book appt.', 'Go over stats notes', 'Update tayLyrics ',
       'Review Naive Bayes', 'Review Naive Bayes + probability',
       'Finish data viz. HW', 'Stats HW Q3', 'Data viz. project',
       'Databases project drafting', 'Linguistics HW - perplexity',
       'Go over stats HW', 'Linguistics HW: perplexity',
       'Finish linguistics HW!', 'Govt. sec. 5 vocab',
       'Govt. Sec. 1 work', 'Govt. sec. 4 vocab', 'Govt. sec. 4 lectures',
       'Govt. sec. 4 lecture video 3', 'Govt. sec. 4 lecture videos 4-5',
       'Finish all govt. sec. 4 work', 'Govt sec. 5 lectures',
       'Finish up govt. work', 'Update tayLyrics',
       'Stats notes and revision w/ Hannah and Lauren', 'Stats revision',
       'Databases quizlet', 'Databases flashcards',
       'Stats revision (last-minute)', 'Data viz. peer grading',
       'tayLyrics updates', 'Govt. sec. 6 vocab',
       'Govt. sec. 6 lectures, quiz, and assignment', 'Naive Bayes recap',
       "Order Tiff's", 'Naive Bayes notes', 'Start databases project',
       'Naive Bayes demo', 'Complete Naive Bayes demo',
       'Logistic regression revision', 'Logistic regression notes',
       'Finish up stats HW', 'Finalize data viz. HW', 'Linguistics Q1',
       'Databases project 2', 'Finish databases project',
       'Govt. sec. 7 vocab', 'Finish up govt. sec. 7 work',
       'Logistic regression demo', 'LR cross-validation demo',
       'Perceptrons notes', 'Stats HW Q1(a)(b)',
       'Perceptrons notes (backprop.)', 'Stats HW Q1(c)(d)',
       'Stats HW (rest of Q1)', 'Project planning',
       'Starting taylor_naive_bayes!',
       'Play around w/ taylor_naive_bayes', 'taylor_naive_bayes',
       'Govt. exam 1', 'Ochem work session w/ Hannah',
       'taylor_naive_bayes script', 'Linguistics work',
       'CNS scholarship essays', 'Opp. scholar application',
       'Project proposal', 'Databases Quizlet',
       'Finish databases Quizlet', 'Databases project',
       'Twitter scraping', 'Project test code',
       'Databases project queries', 'Data scraping', 'Project code',
       'Tweet scraping', 'Presentation revision & prep.',
       'Databases revision x scraping', 'Project proposal x scraping',
       'Govt. work (all)', 'Complete data viz. project',
       'Scraping tweets + assigning results', 'SDS HW',
       'Scraping tweets + organizing repo', 'Word embeddings notes',
       'Tweet Naive Bayes', 'Nap', 'Data preprocessing pipeline',
       'Complete data collection + cont. Naive Bayes ',
       'Tweets Naive Bayes (new)', 'Project cont. + SDS HW Q2',
       'Gametime tweets analysis (study session w/ Hannah)',
       'Project cont.', 'Project peer grading', 'NB prelim. conclusions',
       'Random project work', '3 Nights transposition',
       'Govt. sec. 9 vocab.', 'Govt. video 9.1',
       'Govt. work (lectures + assignments)', 'SDS HW (not done yet)',
       'Hypothesis testing notes', 'Matrix algebra notes',
       'SDS HW (almost done)', 'Databases quiz 4 quizlet',
       'Data viz. HW (not done - fix)',
       'Data viz. HW (finished - check and submit tmr)',
       'Databases quizlet (done)', 'Go through Quizlet',
       'posit::conf registration', 'Scraping genius lyrics',
       'Databases quiz review', 'Govt. sec. 10 vocab.',
       'Govt. lectures 10.1 - 10.5', 'Finish govt. work',
       'Course planning', 'Databases project (not done)',
       'MLDS presentation', 'Miscellaneous databases + SDS + MLDS work',
       'Presentation overview', 'Waterparks lyrics scraping',
       'Research comp. linguistics labs', 'Presentation practice',
       'Databases project (I give up)', 'Waterparks lyrics data cleaning',
       'Stats revision (done)', 'Data viz. HW (not done)',
       'Registration planning', 'Govt. sec. 11 vocab.',
       'Govt. sec. 11 work (all)',
       'Linguistics research x project account IDs',
       'Scraping more tweets', 'Scraping x data viz. project ',
       'Data viz. project 3', 'Scraping x data viz. project',
       'MLDS invoice', 'Linguistics HW (one Q left)',
       'Stats HW (generally done)', 'Linguistics HW (finished) + project',
       'Go over HW w/ Anjie', 'Data viz. project (done)',
       'Stats HW (finished!)', 'Govt. vocab and lectures (1-2)',
       'Govt. work (finished)', 'Databases quiz 5 revision',
       'Linguistics project',
       'Linguistics project (NB baselines and BERTweet)',
       'Linguistics project (BERT and BERTweet)',
       'Linguistics final presentation', 'LIN project + presentation',
       'Stats revision + F-tests notes',
       'Govt. work (NOT done) x laundry', 'Govt. work (done!)',
       'Govt. exam 2 (done w/ govt!!!)',
       'Study session w/ Hannah, Kenadi, Lauren, Sydney',
       'Jasement study time w/ Hannah (and Lauren)', 'BERT models',
       'Linguistics project (w/ Hannah and Lauren)',
       'Study w/ Hannah, Canon, and Lauren',
       'Linguistics research notes + email Jessy',
       'Waterparks lyric scraper', 'Waterparks lyrics game',
       'Waterparks lyrics game x read JURPA revision',
       'Book posit::conf hotel', 'Misc. logistics',
       'AI Factory workspaces', 'titanic workspace test', 'Meeting prep',
       'Misc.', 'Intro to mistral course',
       'Finish intro to mistral course',
       'Langchain course 1 (2 vids left)',
       'Misc. - looking over projects, setting up GitLab, etc.',
       'Gitlab setup (not done)', 'sklz-navigator',
       'Finish LangChain course 1', 'Start prompting course',
       'sklz: outline and meeting agenda', 'sklz: sklz class', 'sklz',
       'internshipDatabase', 'tayLyrics -> streamlit', None,
       'Export and Sensitive Info Training', 'sklz: new hire profile',
       'tayLyrics', 'sklz x Wifi / VPN issues', 'Fix computer + sklz',
       'Aero GSC notes + sklz', 'sklz + aero gsc',
       'aero gsc - spectral clustering prelim.',
       'setting up new workspace + sklz ',
       'aero gsc - clustering and PCA', 'aero gsc - 3d clustering',
       'aero gsc - clustering', 'aero gsc - clustering cont.',
       'sklz + presentation prep', 'misc.', 'misc. + developing',
       'sklz - update skills job', 'aero gsc', 'misc',
       'Gone to Engineering + registration prep',
       'MLDS Data Viz. presentation', 'Data viz. presentation cont.',
       'tayLyrics - AWS', 'Misc. prep', "Edit Justin's essays",
       'tayLyrics - added hints limit', 'MLDS corporate package',
       'MLDS intro stuff', 'C S 309 intro modules (not done)',
       'Update resume', 'C S 309 - completed intro module',
       'Update MLDS hornslink', 'Read + annotate paper',
       'Read and annotate other paper', 'Research notes',
       'MLDS officer meeting prep. + first meeting prep',
       'Research ideas', 'SDS 336 HW1', 'SDS 364 HW',
       'C S 309 pre-class module', 'Research work',
       'Research stuff - figured out scraper',
       'Misc. - MLDS and lyriguessr stuff', 'Misc. + UTCS setup',
       'SDS 334 quiz 2', 'Research approach',
       'Misc. - lyriguessr and tweet scraping',
       'lyriguessr - promo graphics', 'Scheduling',
       "Place Potbelly's order", 'Research - filtering parent tweets',
       'Research - scraping game events w/ Hannah and Sydney',
       'Research - scraping replies',
       'C S 326E EX0 + C S 309 pre-class work (NOT DONE)',
       'C S 309 pre-class modules (done)', 'lyriguessr promo',
       'Misc. - lyriguessr promo, Apple app., Chevron email, etc.',
       'Internship apps', 'OOEF', 'Misc. - tayLyrics promo, HTTP vids',
       'C S 309 HW1', 'SDS 336 Quiz 3', 'C S 326E Hands-on DNS 1',
       'Misc. - MLDS catering & funds + schedule assignments, etc.',
       'lyriguessr - analytics, Sabrina dataset', 'tayLyrics promo',
       'Misc. - lyriguessr promo, The Trade Desk app., C S 309 readings',
       'Research - LLM wrapper',
       'Research LLM + C S 309 readings (1 & 2)',
       'Misc. - research LLM + lyriguessr dev.',
       'Misc. - C S 309 readings (done)',
       'C S 309 pre-class modules (almost done) + research LLM',
       'C S 309 pre-class module (done)',
       'Misc. - research stuff, codesignal practice, etc.',
       'Research - score-matching',
       'tayLyrics promo (emailed Prof. Scala)', 'C S 326E quizzes (done)',
       'OOEF & Invoice form', 'Misc. - lyriguessr', 'Misc. ',
       'SDS 336 quiz 4 (done)', 'TTD CodeSignal (DAMN IT)',
       'Schedule assignments', 'waterparksGuessr updates + promo',
       'Research - tweet filtering, location generalizing',
       'Research - location mapping + waterparksGuessr promo',
       'C S 309 pre-class module, misc. MLDS stuff',
       'lyriguessr - tried to set up a MAIN analytics property but failed',
       'Research - cleaning tweets, looking for patterns',
       'MLDS stuff - reserved food card for social, completed OOEF for Tues.',
       'SDS 336 project data setup etc.',
       'Research - examining trends, defining collectivism',
       'Research - collectivism mapping, new wordclouds',
       'Misc. - I forgot', 'C S 326E EX1 & diagram', 'C S 309 HW2',
       'SDS 336 quiz 5',
       'Research - modularizing parent tweet preprocessing / filtering',
       'C S 326E project 1 (did nothing)', 'C S 326E textbook notes',
       'C S 326E project (parse_server_info)', 'C S 326E project',
       'Research - modularization of preprocessing', 'Internship apps.',
       'C S 309 readings', 'Email Apple',
       'Research - tweet preprocessing, collectivism vs individualism, logistic regression',
       'OOEF & invoice form', 'internship_database - resources table',
       'Misc. - C S 326E submissions, internship apps.', 'SDS 336 quiz 6',
       'Misc. developing + sabrinaGuessr promo',
       'Misc. - internship apps.', 'SP25 course planning',
       'C S 326E revision (finished Ch. 1)', 'Networking revision',
       'Networking revision (cont.)',
       'Networking revision (Ch. 2; not done)', 'Networking quizzes',
       'Networking revision (Ch. 2 DNS)',
       'Networking revision (finished Ch. 2, started Ch. 3)',
       'Networking revision (Ch. 3 done; started structured exam revision)',
       'Networking revision (cheatsheet)',
       'Research - looking into pronouns',
       'Reading group OOEF, invoice form',
       'Networking revision - filled cheat sheet',
       'journal_analysis - example ', 'journal_analysis - started UI',
       'SDS 336 quiz 7', 'C S 309 HW3', 'Misc. - assignments',
       'NVIDIA student program app.', "Order Tiff's x2",
       'C S 309 reading',
       'Misc. - C S 309 pre-class reflection, tayLyrics',
       'Research + SDS 336 project EDA', 'OOEFs and invoice forms',
       'Email Jessica abt HEB Bakery', 'SDS quiz 8',
       'Misc. - scheduling assignments, MLDS stuff',
       'Research - spurs preprocessing, nicknaming & NER',
       'Misc. - research nicknames; MLDS HEB stuff',
       'Research nicknames - outlined goals, mapped spurs nicknames',
       'Misc. - research (club accounts)', 'Respond to Apple',
       'C S 309 videos (done)', 'C S 309 pre-class reflection',
       'Research - finding accounts, corresponding IDs',
       'Treasurer resources doc', 'Research - tweetscraper',
       'Research - resetting the scraping process',
       'Misc. - scraping tweets, lounging, respond to Meta, etc.',
       'Message Abby', 'SDS 336 quiz 9 + C S 309 HW4',
       'Research - data analysis',
       'Misc. - scheduling assignments, reply to recruiters, registration planning, etc.',
       'Misc. - encyclopedia (intergroup bias)',
       'Misc. - interview notes, encyclopedia',
       'Misc. - emails, linguistic intergroup bias',
       'Misc. - MLDS, C S 309 pre-class module', 'Encylopedia',
       'Misc. - mostly SDS 336 project adding features (VADER + length) and labels',
       'SDS 336 project - training RF + making slides',
       'Misc. - msg. Venkat, SDS project presentation',
       'Misc. - schedule assignments, MLDS, etc.',
       'Integra data assessment', 'Research - Big Six nicknames',
       'Research - nicknaming', 'Misc. - registration planning',
       'C S 309 pre-class module (not done)',
       'Research - nicknames (other clubs)',
       'Research - assigning scores + game info, player matching',
       'Research - cleaning player_identification', 'Registration prep',
       'SDS 336 quiz 11', 'C S 309 HW5', 'MLDS NLP slides',
       'Research - win probability',
       'Research - win probability model features',
       'Presentation run-through', 'Research - win prob. model',
       'Presentation prep', 'Research - looking into restructuring model',
       'Misc. - project update, etc.', 'SDS 336 HW12',
       'Schedule assignments, misc. tasks', 'SDS 336 paper presentation',
       'Encyclopedia - adding ideas to ideabank',
       'Research - LWP model (data manip.)', 'Research - LWP model',
       'Research - LWP model, scraping weekly standings',
       'Research - scraping standings', 'SDS 336 Quiz 13 w/ Anjie',
       'Misc. - scheduling assignments, etc.',
       'SDS 336 project - encoding keywords',
       'Research - nickname stats, in-group/out-group stuff',
       'Research + SDS 336 group project',
       'Research - in/out-group referrals', 'C S 309 Ethics Project',
       'C S 309 Ethics Project cont.', 'Visa apps.',
       'Misc. - SDS 336 report, recruiting',
       'Misc. SDS 336 report, LinkedIn networking',
       'Misc. - LinkedIn networking + research (finally made in/out-group nicknaming plots)',
       'Misc. - research + LinkedIn networking', 'Edit report',
       'Misc. - Visa email', 'Dashboard',
       'Networking + internship apps. (5)',
       'LinkedIn networking + cold emailing', 'Linkedin networking',
       'Linkedin networking + cold emailing'], dtype=object)
import os
from dotenv import load_dotenv
from together import Together
load_dotenv()
True
class BlockCategorizer:

    def __init__(self, all_events):
        self.client = Together(api_key=os.environ.get('TOGETHER_API_KEY'))
        self.all_events = all_events
        self.template = """
You are given a list of Google Calendar event titles, and your job is to place each event into a predefined list of categories.
Return your result as a dictionary in JSON format, where the keys represent the event category, and the value of each key is a list 
containing the corresponding event titles exactly as provided. 

The predefined categories and descriptions are as follows: 
- "Class: GOV 310L": events whose titles contain "Govt." or "GOV 310L"
- "Class: SDS 334": events whose titles contain "Stats," "stats," or "Statistics"
- "Class: LIN 371": events whose titles contain "Linguistics"
- "Class: SDS 375": events whose titles contain "Data viz"
- "Class: CS 327E": events whose titles contain "Databases"
- "Class: CS 326E": events whose titles contain "Networking" or "C S 326E"
- "Class: CS 309": events whose titles contain "C S 309"
- "Class: SDS 336": events whose titles contain "SDS 336"
- "Research": events whose titles contain "Research"
- "MLDS": events whose titles contain "MLDS," "OOEF," or "invoice," or anything along the lines of ordering food, e.g. "Order Tiff's Treats"
- "Developing": events whose titles contain "lyrics," "tayLyrics," "lyriguessr," "journal_analysis," "taylor_naive_bayes," "Encylopedia," or any variation of "waterparks"
- "Recruitment": events whose titles contain "LinkedIn," "Interview," "apps.," or "Internship apps."
- "Lockheed": events whose titles contain "sklz," "aero gsc," or "Aero GSC"
- "Miscellaneous": any events who either do not fit in other provided categories, or who contain "Miscellaneous" or "Misc." 

Task: 
Now map each of the following event titles to their respective categories: {events}

Guidelines: 
- Do NOT include explanations, comments, or any additional text.
- Each event MUST be mapped to a category.
- Each event may only correspond to ONE category. Any events who may fit in multiple categories must be placed in "Miscellaneous."
- ONLY return the output in JSON format.
- Do NOT preface your response with "```json."
- Ensure the JSON is properly formatted and contains no trailing commas or unnecessary spaces.
"""

    def map_events(self, events):
        
        response = self.client.chat.completions.create(model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
                                                       messages=[{"role": "user", "content": self.template.format(events=events)}],
                                                       max_tokens=1200)

        out = response.choices[0].message.content
        try: 
            ret = json.loads(out)
            return ret
        except json.JSONDecodeError:
            print(out)
            return {}

    def map_all_events(self): 
        FINAL = {}
        
        for i in range(20, len(self.all_events) + 1 + 20, 20):
            to_map = self.all_events[i - 20:i]
            mapped = self.map_events(to_map)

            for key, ls in mapped.items(): 
                if key not in FINAL: 
                    FINAL[key] = ls
                else: 
                    FINAL[key] += ls
        return FINAL
test_blocks = ['Govt. intro activities',
       'Govt. lectures, quiz, short assignment ', 'Interview prep',
       'Interview prep and interviews', 'Interview prep and interview',
       'Statistics notes', 'Govt. vocab', 'Data Viz HW', 'Govt. lectures',
       'Stats notes', 'Govt. quiz and assignment', 'Stats HW',
       'Probability review', "Order Tiff's Treats for MLDS",
       'Stats HW Q1', 'Linguistics HW', 'Data viz. HW',
       'Finalize stats HW', 'Databases review', 'Databases revision',
       'Linguistics HW (cont.)', 'Laundry', 'Finalize linguistics HW',
       'Govt. lectures, quiz, and assignment', 'LM screening forms',
       'Book appt.', 'Go over stats notes', 'Update tayLyrics ',
       'Review Naive Bayes', 'Review Naive Bayes + probability',
       'Finish data viz. HW', 'Stats HW Q3', 'Data viz. project']
categorizer = BlockCategorizer()
resp = categorizer.map_events(test_blocks)
resp
'{\n  "Class: Govt.": ["Govt. intro activities", "Govt. lectures, quiz, short assignment ", "Govt. vocab", "Govt. lectures", "Govt. lectures, quiz, and assignment", "Govt. quiz and assignment"],\n  "Class: SDS 334": ["Statistics notes", "Stats notes", "Stats HW", "Stats HW Q1", "Stats HW Q3", "Go over stats notes"],\n  "Class: LIN 371": ["Linguistics HW", "Linguistics HW (cont.)", "Finalize linguistics HW", "Finish data viz. HW"],\n  "Class: SDS 375": ["Data Viz HW", "Data viz. HW", "Data viz. project"],\n  "Class: CS 327E": ["Databases review", "Databases revision"],\n  "Miscellaneous": ["Interview prep", "Interview prep and interviews", "Interview prep and interview", "Probability review", "Review Naive Bayes", "Review Naive Bayes + probability", "LM screening forms", "Book appt.", "Update tayLyrics ", "Laundry", "Order Tiff\'s Treats for MLDS", "Finalize stats HW"]\n}'
import json
json.loads(resp)
{'Class: Govt.': ['Govt. intro activities',
  'Govt. lectures, quiz, short assignment ',
  'Govt. vocab',
  'Govt. lectures',
  'Govt. lectures, quiz, and assignment',
  'Govt. quiz and assignment'],
 'Class: SDS 334': ['Statistics notes',
  'Stats notes',
  'Stats HW',
  'Stats HW Q1',
  'Stats HW Q3',
  'Go over stats notes'],
 'Class: LIN 371': ['Linguistics HW',
  'Linguistics HW (cont.)',
  'Finalize linguistics HW',
  'Finish data viz. HW'],
 'Class: SDS 375': ['Data Viz HW', 'Data viz. HW', 'Data viz. project'],
 'Class: CS 327E': ['Databases review', 'Databases revision'],
 'Miscellaneous': ['Interview prep',
  'Interview prep and interviews',
  'Interview prep and interview',
  'Probability review',
  'Review Naive Bayes',
  'Review Naive Bayes + probability',
  'LM screening forms',
  'Book appt.',
  'Update tayLyrics ',
  'Laundry',
  "Order Tiff's Treats for MLDS",
  'Finalize stats HW']}
categorizer = BlockCategorizer(pd.DataFrame(BLOCKS)["name"].unique())
resp = categorizer.map_all_events()
resp
{
  "Class: GOV 310L": [],
  "Class: SDS 334": [],
  "Class: LIN 371": [],
  "Class: SDS 375": [],
  "Class: CS 327E": [],
  "Class: CS 326E": [],
  "Class: CS 309": [],
  "Class: SDS 336": [],
  "Research": [],
  "MLDS": [],
  "Developing": [],
  "Recruitment": [],
  "Lockheed": [],
  "Miscellaneous": [
    "Misc. - C S 309 pre-class reflection, tayLyrics",
    "Email Jessica abt HEB Bakery",
    "SDS quiz 8",
    "Misc. - scheduling assignments, MLDS stuff",
    "Misc. - research nicknames; MLDS HEB stuff",
    "Misc. - research (club accounts)",
    "Respond to Apple",
    "Treasurer resources doc",
    "Message Abby",
    "Misc. - scraping tweets, lounging, respond to Meta, etc."
  ]
}

{
  "Class: GOV 310L": ["Misc. - C S 309 pre-class reflection, tayLyrics"],
  "Class: SDS 334": [],
  "Class: LIN 371": [],
  "Class: SDS 375": [],
  "Class: CS 327E": [],
  "Class: CS 326E": [],
  "Class: CS 309": ["C S 309 videos (done)", "C S 309 pre-class reflection"],
  "Class: SDS 336": ["SDS 336 quiz 9 + C S 309 HW4"],
  "Research": [
    "Research + SDS 336 project EDA",
    "Research - spurs preprocessing, nicknaming & NER",
    "Research nicknames - outlined goals, mapped spurs nicknames",
    "Research - finding accounts, corresponding IDs",
    "Research - tweetscraper",
    "Research - resetting the scraping process"
  ],
  "MLDS": ["OOEFs and invoice forms", "Misc. - scheduling assignments, MLDS stuff", "Misc. - research nicknames; MLDS HEB stuff"],
  "Developing": ["Misc. - C S 309 pre-class reflection, tayLyrics"],
  "Recruitment": [],
  "Lockheed": [],
  "Miscellaneous": []
}

{
  "Class: GOV 310L": [],
  "Class: SDS 334": [],
  "Class: LIN 371": [],
  "Class: SDS 375": [],
  "Class: CS 327E": [],
  "Class: CS 326E": [],
  "Class: CS 309": ["C S 309 videos (done)", "C S 309 pre-class reflection"],
  "Class: SDS 336": ["SDS 336 quiz 9 + C S 309 HW4"],
  "Research": [
    "Research + SDS 336 project EDA",
    "Research - spurs preprocessing, nicknaming & NER",
    "Research nicknames - outlined goals, mapped spurs nicknames",
    "Research - finding accounts, corresponding IDs",
    "Research - tweetscraper",
    "Research - resetting the scraping process"
  ],
  "MLDS": ["OOEFs and invoice forms", "Misc. - scheduling assignments, MLDS stuff", "Misc. - research nicknames; MLDS HEB stuff"],
  "Developing": ["Misc. - C S 309 pre-class reflection, tayLyrics"],
  "Recruitment": [],
  "Lockheed": [],
  "Miscellaneous": [
    "Email Jessica abt HEB Bakery",
    "SDS quiz 8",
    "Respond to Apple",
    "Treasurer resources doc",
    "Message Abby",
    "Misc. - scraping tweets, lounging, respond to Meta, etc."
  ]
}

{
  "Class: GOV 310L": ["Misc. - C S 309 pre-class reflection, tayLyrics"],
  "Class: SDS 334": ["SDS quiz 8"],
  "Class: LIN 371": [],
  "Class: SDS 375": [],
  "Class: CS 327E": [],
  "Class: CS 326E": [],
  "Class: CS 309": ["C S 309 videos (done)", "C S 309 pre-class reflection"],
  "Class: SDS 336": ["SDS 336 quiz 9 + C S 309 HW4"],
  "Research": [
    "Research + SDS 336 project EDA",
    "Research - spurs preprocessing, nicknaming & NER",
    "Research nicknames - outlined goals, mapped spurs nicknames",
    "Research - finding accounts, corresponding IDs",
    "Research - tweetscraper",
    "Research - resetting the scraping process"
  ],
  "MLDS": ["OOEFs and invoice forms", "Misc. - scheduling assignments, MLDS stuff", "Misc. - research nicknames; MLDS HEB stuff"],
  "Developing": [],
  "Recruitment": ["Respond to Apple", "Message Abby"],
  "Lockheed": [],
  "Miscellaneous": [
    "Email Jessica abt HEB Bakery",
    "Misc. - scraping tweets, lounging, respond to Meta, etc."
  ]
}

{
  "Class: GOV 310L": ["Misc. - C S 309 pre-class reflection, tayLyrics"],
  "Class: SDS 334": ["SDS quiz 8"],
  "Class: LIN 371": [],
  "Class: SDS 375": [],
  "Class: CS 327E": [],
  "Class: CS 326E": [],
{'Class: GOV 310L': ['Govt. intro activities',
  'Govt. lectures, quiz, short assignment ',
  'Govt. vocab',
  'Govt. lectures',
  'Govt. quiz and assignment',
  'Govt. lectures, quiz, and assignment',
  'Govt. sec. 5 vocab',
  'Govt. Sec. 1 work',
  'Govt. sec. 4 vocab',
  'Govt. sec. 4 lectures',
  'Govt. sec. 4 lecture video 3',
  'Govt. sec. 4 lecture videos 4-5',
  'Finish all govt. sec. 4 work',
  'Govt sec. 5 lectures',
  'Finish up govt. work',
  'Govt. sec. 6 vocab',
  'Govt. sec. 6 lectures, quiz, and assignment',
  'Govt. sec. 7 vocab',
  'Finish up govt. sec. 7 work',
  'Govt. exam 1',
  'Govt. work (all)',
  'Govt. sec. 9 vocab.',
  'Govt. video 9.1',
  'Govt. work (lectures + assignments)',
  'Govt. sec. 10 vocab.',
  'Govt. lectures 10.1 - 10.5',
  'Finish govt. work',
  'Govt. sec. 11 vocab.',
  'Govt. sec. 11 work (all)',
  'Govt. vocab and lectures (1-2)',
  'Govt. work (finished)',
  'Govt. work (NOT done) x laundry',
  'Govt. work (done!)',
  'Govt. exam 2 (done w/ govt!!!)',
  'misc.',
  'misc. + developing'],
 'Class: SDS 334': ['Statistics notes',
  'Stats notes',
  'Stats HW',
  'Stats HW Q1',
  'Go over stats notes',
  'Go over stats HW',
  'Stats HW Q3',
  'Stats notes and revision w/ Hannah and Lauren',
  'Stats revision',
  'Stats revision (last-minute)',
  'Finish up stats HW',
  'Stats HW Q1(a)(b)',
  'Stats HW Q1(c)(d)',
  'Stats HW (rest of Q1)',
  'SDS HW',
  'SDS HW Q2',
  'SDS HW (not done yet)',
  'SDS HW (almost done)',
  'Stats revision (done)',
  'Stats HW (generally done)',
  'Stats HW (finished!)',
  'Stats revision + F-tests notes',
  'sklz - update skills job',
  'aero gsc',
  'SDS 334 quiz 2'],
 'Class: LIN 371': ['Linguistics HW',
  'Linguistics HW (cont.)',
  'Finalize linguistics HW',
  'Linguistics HW - perplexity',
  'Linguistics HW: perplexity',
  'Finish linguistics HW!',
  'Linguistics Q1',
  'Linguistics work',
  'Word embeddings notes',
  'Research comp. linguistics labs',
  'Linguistics HW (one Q left)',
  'Linguistics research x project account IDs',
  'Linguistics HW (finished) + project',
  'Go over HW w/ Anjie',
  'Linguistics HW (finished) + project',
  'Linguistics project',
  'Linguistics project (NB baselines and BERTweet)',
  'Linguistics project (BERT and BERTweet)',
  'Linguistics final presentation',
  'LIN project + presentation',
  'Linguistics project (w/ Hannah and Lauren)',
  'Linguistics research notes + email Jessy',
  'Gone to Engineering + registration prep'],
 'Class: SDS 375': ['Data Viz HW',
  'Data viz. HW',
  'Finalize stats HW',
  'Update tayLyrics ',
  'Review Naive Bayes',
  'Review Naive Bayes + probability',
  'Data viz. peer grading',
  'Finalize data viz. HW',
  'Complete data viz. project',
  'Data viz. HW (not done - fix)',
  'Data viz. HW (finished - check and submit tmr)',
  'Data viz. HW (not done)',
  'Data viz. project 3',
  'Scraping x data viz. project',
  "Scraping x data viz. project '",
  'Data viz. project (done)',
  'MLDS Data Viz. presentation',
  'Data viz. presentation cont.',
  'MLDS corporate package',
  'MLDS intro stuff'],
 'Class: CS 327E': ['Databases review',
  'Databases revision',
  'Databases project drafting',
  'Databases quizlet',
  'Databases flashcards',
  'Start databases project',
  'Databases project 2',
  'Finish databases project',
  'Databases Quizlet',
  'Finish databases Quizlet',
  'Databases project',
  'Databases project queries',
  'Databases revision x scraping',
  'Databases quiz 4 quizlet',
  'Databases quizlet (done)',
  'Databases quiz review',
  'Databases project (not done)',
  'Databases project (I give up)',
  'Databases quiz 5 revision',
  'C S 309 intro modules (not done)',
  'C S 309 - completed intro module'],
 'Class: CS 326E': ['Databases review',
  'Databases revision',
  'Databases project drafting',
  'Naive Bayes demo',
  'Complete Naive Bayes demo',
  'Logistic regression revision',
  'Logistic regression notes',
  'Logistic regression demo',
  'LR cross-validation demo',
  'Scraping tweets + organizing repo',
  'Go through Quizlet',
  'Databases project (I give up)',
  'Study session w/ Hannah, Kenadi, Lauren, Sydney',
  'Update resume',
  'C S 326E EX0 + C S 309 pre-class work (NOT DONE)',
  'C S 326E EX1 & diagram',
  'C S 326E project 1 (did nothing)',
  'C S 326E textbook notes',
  'C S 326E project (parse_server_info)',
  'C S 326E project',
  'C S 326E revision (finished Ch. 1)',
  'Networking revision',
  'Networking revision (cont.)',
  'Networking revision (Ch. 2; not done)',
  'Networking quizzes',
  'Networking revision (Ch. 2 DNS)',
  'Networking revision (finished Ch. 2, started Ch. 3)',
  'Networking revision (Ch. 3 done; started structured exam revision)',
  'Networking revision (cheatsheet)',
  'Networking revision - filled cheat sheet'],
 'Class: CS 309': ['Update MLDS hornslink',
  'C S 309 pre-class module',
  'C S 309 pre-class modules (done)',
  'C S 309 HW1',
  'C S 309 pre-class modules (almost done) + research LLM',
  'C S 309 pre-class module (done)',
  'C S 309 readings (done)',
  'C S 309 HW2',
  'C S 309 readings',
  'C S 309 HW3',
  'C S 309 reading',
  'C S 309 HW5'],
 'Class: SDS 336': ['Read + annotate paper',
  'Read and annotate other paper',
  'SDS 336 HW1',
  'SDS 336 Quiz 3',
  'SDS 336 quiz 5',
  'SDS 336 quiz 6',
  'SDS 336 quiz 7',
  'SDS 336 quiz 11',
  'SDS 336 HW12',
  'SDS 336 paper presentation',
  'SDS 336 Quiz 13 w/ Anjie',
  'SDS 336 project - encoding keywords'],
 'Research': ['LM screening forms',
  'Book appt.',
  'Project planning',
  'Opp. scholar application',
  'Project proposal',
  'Tweet Naive Bayes',
  'Tweets Naive Bayes (new)',
  'Complete data collection + cont. Naive Bayes ',
  'NB prelim. conclusions',
  'tayLyrics - AWS',
  'tayLyrics - added hints limit',
  'Research notes',
  'Research ideas',
  'Research work',
  'Research stuff - figured out scraper',
  'Research approach',
  'Research - filtering parent tweets',
  'Research - scraping game events w/ Hannah and Sydney',
  'Research - scraping replies',
  'Research - LLM wrapper',
  'Research LLM + C S 309 readings (1 & 2)',
  'Research - score-matching',
  'Research - tweet filtering, location generalizing',
  'Research - location mapping + waterparksGuessr promo',
  'Research - cleaning tweets, looking for patterns',
  'Research - examining trends, defining collectivism',
  'Research - collectivism mapping, new wordclouds',
  'Research - score-matching',
  'Research - tweet filtering, location generalizing',
  'Research - location mapping + waterparksGuessr promo',
  'Research - cleaning tweets, looking for patterns',
  'Research - examining trends, defining collectivism',
  'Research - collectivism mapping, new wordclouds',
  'Research - modularizing parent tweet preprocessing / filtering',
  'Research - modularization of preprocessing',
  'Research - tweet preprocessing, collectivism vs individualism, logistic regression',
  'Research - looking into pronouns',
  'Research - data analysis',
  'Research - Big Six nicknames',
  'Research - nicknaming',
  'Research - assigning scores + game info, player matching',
  'Research - cleaning player_identification',
  'Research - nicknames (other clubs)',
  'Research - assigning scores + game info, player matching',
  'Research - cleaning player_identification',
  'Research - Registration prep',
  'Research - win probability',
  'Research - win probability model features',
  'Research - win prob. model',
  'Research - looking into restructuring model',
  'Research - LWP model (data manip.)',
  'Research - LWP model',
  'Research - LWP model, scraping weekly standings',
  'Research - scraping standings',
  'Research - LWP model (data manip.)',
  'Research - LWP model',
  'Research - LWP model, scraping weekly standings',
  'Research - scraping standings',
  'Research - nickname stats, in-group/out-group stuff',
  'Research + SDS 336 group project',
  'Research - in/out-group referrals'],
 'MLDS': ["Order Tiff's Treats for MLDS",
  'LM screening forms',
  'Book appt.',
  "Order Tiff's Treats",
  'Update tayLyrics',
  "Order Tiff's",
  'Naive Bayes recap',
  'Naive Bayes notes',
  'Perceptrons notes',
  'Perceptrons notes (backprop.)',
  'Twitter scraping',
  'Project test code',
  'Tweet scraping',
  'Scraping tweets + assigning results',
  'Scraping tweets + organizing repo',
  "Order Tiff's Treats",
  'posit::conf registration',
  'Scraping genius lyrics',
  'MLDS presentation',
  'Miscellaneous databases + SDS + MLDS work',
  'MLDS invoice',
  'BERT models',
  'Waterparks lyric scraper',
  'Waterparks lyrics game',
  'Waterparks lyrics game x read JURPA revision',
  'MLDS corporate package',
  'MLDS intro stuff',
  'MLDS officer meeting prep. + first meeting prep.',
  'OOEF',
  'Misc. - MLDS catering & funds + schedule assignments, etc.',
  'OOEF & Invoice form',
  'Misc. - lyriguessr',
  'Misc. - I forgot',
  'C S 309 pre-class module, misc. MLDS stuff',
  'MLDS stuff - reserved food card for social, completed OOEF for Tues.',
  'OOEF & invoice form',
  'internship_database - resources table',
  'Reading group OOEF, invoice form',
  'Misc. - MLDS, C S 309 pre-class module',
  'Misc. - schedule assignments, MLDS, etc.',
  'MLDS NLP slides',
  'Visa apps.',
  'Misc. - SDS 336 report, recruiting',
  'Misc. SDS 336 report, LinkedIn networking',
  'Misc. - LinkedIn networking + research (finally made in/out-group nicknaming plots)',
  'Misc. - research + LinkedIn networking',
  'Misc. - Visa email'],
 'Developing': ['Update tayLyrics ',
  'Review Naive Bayes',
  'Review Naive Bayes + probability',
  'lyrics',
  'tayLyrics',
  'lyriguessr',
  'journal_analysis',
  'taylor_naive_bayes',
  'Encylopedia',
  'waterparks',
  'Update tayLyrics',
  'Starting taylor_naive_bayes!',
  'Play around w/ taylor_naive_bayes',
  'taylor_naive_bayes',
  'taylor_naive_bayes script',
  'journal_analysis',
  'Encylopedia',
  'waterparks',
  'Gametime tweets analysis (study session w/ Hannah)',
  '3 Nights transposition',
  'Scraping genius lyrics',
  'Waterparks lyrics scraping',
  'Waterparks lyrics data cleaning',
  'Waterparks lyrics game',
  'Waterparks lyrics game x read JURPA revision',
  'sklz-navigator',
  'misc. + developing',
  'lyriguessr - promo graphics',
  'lyriguessr promo',
  'tayLyrics promo',
  'lyriguessr - analytics, Sabrina dataset',
  'Misc. - tayLyrics promo, HTTP vids',
  'Misc. - lyriguessr promo, Apple app., Chevron email, etc.',
  'Misc. - lyriguessr promo, The Trade Desk app., C S 309 readings',
  'tayLyrics promo (emailed Prof. Scala)',
  'lyriguessr - tried to set up a MAIN analytics property but failed',
  'waterparksGuessr updates + promo',
  'Misc. developing + sabrinaGuessr promo',
  'journal_analysis - example ',
  'journal_analysis - started UI',
  'Encyclopedia - adding ideas to ideabank'],
 'Recruitment': ['Interview prep',
  'Interview prep and interviews',
  'Interview prep and interview',
  'Interview prep and interview',
  'Interview prep and interviews',
  'LinkedIn',
  'Interview',
  'apps.',
  'Internship apps.',
  'CNS scholarship essays',
  'Project code',
  'Registration planning',
  'Update resume',
  'Internship apps',
  'Internship apps.',
  'Misc. - internship apps.',
  'Misc. - C S 326E submissions, internship apps.',
  'Misc. - SDS 336 report, recruiting',
  'Misc. SDS 336 report, LinkedIn networking',
  'Misc. - LinkedIn networking + research (finally made in/out-group nicknaming plots)',
  'Misc. - research + LinkedIn networking',
  'Visa apps.',
  'Networking + internship apps. (5)',
  'LinkedIn networking + cold emailing',
  'Linkedin networking',
  'Linkedin networking + cold emailing'],
 'Lockheed': ['sklz',
  'aero gsc',
  'Aero GSC',
  'sklz-navigator',
  'sklz - update skills job',
  'aero gsc'],
 'Miscellaneous': ['Probability review',
  'Laundry',
  'Finish data viz. HW',
  'Data viz. project',
  'Finish up stats HW',
  'Finalize data viz. HW',
  'Linguistics Q1',
  'Start databases project',
  'Databases project 2',
  'Finish databases project',
  'Govt. sec. 7 vocab',
  'Finish up govt. sec. 7 work',
  'Logistic regression revision',
  'Logistic regression notes',
  'Logistic regression demo',
  'LR cross-validation demo',
  'Perceptrons notes',
  'Perceptrons notes (backprop.)',
  'Stats HW Q1(a)(b)',
  'Stats HW Q1(c)(d)',
  'Stats HW (rest of Q1)',
  'Project planning',
  'Ochem work session w/ Hannah',
  'Data scraping',
  'Presentation revision & prep.',
  'Project proposal x scraping',
  'Data preprocessing pipeline',
  'Project cont. + SDS HW Q2',
  'Project cont.',
  'Project peer grading',
  'Random project work',
  'Hypothesis testing notes',
  'Matrix algebra notes',
  'Course planning',
  'Presentation overview',
  'Presentation practice',
  'Scraping more tweets',
  "Scraping x data viz. project '",
  "Order Tiff's Treats",
  'Jasement study time w/ Hannah (and Lauren)',
  'Study w/ Hannah, Canon, and Lauren',
  'Book posit::conf hotel',
  'Misc. logistics',
  'Misc.',
  'Intro to mistral course',
  'Finish intro to mistral course',
  'Langchain course 1 (2 vids left)',
  'Misc. - looking over projects, setting up GitLab, etc.',
  'Gitlab setup (not done)',
  'Finish LangChain course 1',
  'Start prompting course',
  'AI Factory workspaces',
  'titanic workspace test',
  'Meeting prep',
  'sklz: outline and meeting agenda',
  'sklz: sklz class',
  'sklz',
  'internshipDatabase',
  'tayLyrics -> streamlit',
  'Export and Sensitive Info Training',
  'sklz: new hire profile',
  'tayLyrics',
  'sklz x Wifi / VPN issues',
  'Fix computer + sklz',
  'Aero GSC notes + sklz',
  'sklz + aero gsc',
  'aero gsc - spectral clustering prelim.',
  'setting up new workspace + sklz ',
  'aero gsc - clustering and PCA',
  'aero gsc - 3d clustering',
  'aero gsc - clustering',
  'aero gsc - clustering cont.',
  'sklz + presentation prep',
  'misc.',
  'misc. + developing',
  'Gone to Engineering + registration prep',
  'MLDS Data Viz. presentation',
  'Data viz. presentation cont.',
  'tayLyrics - AWS',
  'Misc. prep',
  "Edit Justin's essays",
  'tayLyrics - added hints limit',
  'MLDS corporate package',
  'MLDS intro stuff',
  'C S 309 intro modules (not done)',
  'Update resume',
  'Update MLDS hornslink',
  'Read + annotate paper',
  'Read and annotate other paper',
  'Misc. - MLDS and lyriguessr stuff',
  'Misc. + UTCS setup',
  'Misc. - lyriguessr and tweet scraping',
  'Scheduling',
  "Place Potbelly's order",
  'Misc. - lyriguessr promo, Apple app., Chevron email, etc.',
  'Misc. - tayLyrics promo, HTTP vids',
  'Misc. - lyriguessr promo, The Trade Desk app., C S 309 readings',
  'Misc. - research LLM + lyriguessr dev.',
  'Misc. - research stuff, codesignal practice, etc.',
  'C S 326E quizzes (done)',
  'SDS 336 quiz 4 (done)',
  'TTD CodeSignal (DAMN IT)',
  'Schedule assignments',
  'SDS 336 project data setup etc.',
  'Misc.',
  'Misc. - lyriguessr',
  'Misc. - I forgot',
  'C S 309 readings',
  'Email Apple',
  'OOEF & invoice form',
  'internship_database - resources table',
  'Misc. - C S 326E submissions, internship apps.',
  'Misc. - internship apps.',
  'SP25 course planning',
  'Misc. - assignments',
  'NVIDIA student program app.',
  "Order Tiff's x2",
  'Misc. - scheduling assignments, reply to recruiters, registration planning, etc.',
  'Misc. - encyclopedia (intergroup bias)',
  'Misc. - interview notes, encyclopedia',
  'Misc. - emails, linguistic intergroup bias',
  'Encylopedia',
  'Misc. - mostly SDS 336 project adding features (VADER + length) and labels',
  'SDS 336 project - training RF + making slides',
  'Misc. - msg. Venkat, SDS project presentation',
  'Misc. - registration planning',
  'C S 309 pre-class module (not done)',
  'Misc. - Integra data assessment',
  'Presentation run-through',
  'Presentation prep',
  'Misc. - project update, etc.',
  'Schedule assignments, misc. tasks',
  'Misc. - scheduling assignments, etc.',
  'C S 309 Ethics Project',
  'C S 309 Ethics Project cont.',
  'Edit report',
  'Dashboard']}
import re

def label_event(title):
    patterns = {
        "Class: GOV 310L": r'\b(?:Govt\.|GOV 310L|Govt)\b',
        "Class: SDS 334": r'\b(?:Stats|stats|Statistics|SDS 334)\b',
        "Class: LIN 371": r'\b(?:Linguistics|LIN|tweet|tweets)\b',
        "Class: SDS 375": r'\bData viz\b',
        "Class: CS 327E": r'\bDatabases\b',
        "Class: CS 326E": r'\b(?:Networking|C S 326E)\b',
        "Class: CS 309": r'\bC S 309\b',
        "Class: SDS 336": r'\bSDS 336\b',
        "Research": r'\bResearch\b',
        "MLDS": r'\b(?:MLDS|OOEF|invoice|Order .+|Order)\b',
        "Developing": r'\b(?:lyrics|tayLyrics|lyriguessr|journal_analysis|taylor_naive_bayes|Encyclopedia|waterparks|internship_database|waterparksGuessr|internshipDatabase)\b',
        "Recruitment": r'\b(?:LinkedIn|Interview|apps\.|Internship apps\.|internship|internships|apps)\b',
        "Lockheed": r'\b(?:sklz|aero gsc|Aero GSC|LM)\b',
        "Miscellaneous": r'\b(?:Miscellaneous|Misc\.|Misc|Misc.)\b',
    }

    for label, pattern in patterns.items():
        if re.search(pattern, title, re.IGNORECASE): 
            return label
    return "Miscellaneous"
labeled_blocks = []

for block in BLOCKS:

    block["category"] = label_event(block["name"])
    labeled_blocks.append(block)

labeled_blocks
[{'name': 'Govt. intro activities',
  'label': None,
  'start': datetime.datetime(2024, 1, 17, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 12, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. lectures, quiz, short assignment ',
  'label': None,
  'start': datetime.datetime(2024, 1, 18, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 18, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Interview prep',
  'label': None,
  'start': datetime.datetime(2024, 1, 19, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 19, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Recruitment'},
 {'name': 'Interview prep and interviews',
  'label': None,
  'start': datetime.datetime(2024, 1, 22, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 22, 15, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': 'PCL 4.424',
  'category': 'Recruitment'},
 {'name': 'Interview prep',
  'label': None,
  'start': datetime.datetime(2024, 1, 21, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 21, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Recruitment'},
 {'name': 'Interview prep and interview',
  'label': None,
  'start': datetime.datetime(2024, 1, 24, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 14, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL 4.110',
  'category': 'Recruitment'},
 {'name': 'Interview prep and interview',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 7, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 8, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL 3.110',
  'category': 'Recruitment'},
 {'name': 'Statistics notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Statistics notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Govt. vocab',
  'label': None,
  'start': datetime.datetime(2024, 1, 23, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 23, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Data Viz HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 24, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 1, 24, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 24, 19, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 1, 25, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 25, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 25, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 25, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: SDS 334'},
 {'name': 'Govt. quiz and assignment',
  'label': None,
  'start': datetime.datetime(2024, 1, 26, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 26, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 27, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 27, 0, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 28, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 28, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'SZB 3.814',
  'category': 'Class: SDS 334'},
 {'name': 'Probability review',
  'label': None,
  'start': datetime.datetime(2024, 1, 29, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': "Order Tiff's Treats for MLDS",
  'label': None,
  'start': datetime.datetime(2024, 1, 29, 15, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'MLDS'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 29, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 29, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA',
  'category': 'Class: SDS 334'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 1, 30, 8, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 30, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW Q1',
  'label': None,
  'start': datetime.datetime(2024, 1, 30, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 30, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 30, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 30, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 31, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 31, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 1, 31, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 31, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Class: LIN 371'},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 1, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Finalize stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 1, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'Databases review',
  'label': None,
  'start': datetime.datetime(2024, 2, 1, 17, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 1, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Dorm (floor)',
  'category': 'Class: CS 327E'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Class: CS 327E'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 8, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 12, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics HW (cont.)',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 13, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 15, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Dorm',
  'category': 'Class: LIN 371'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 14, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Class: GOV 310L'},
 {'name': 'Finalize linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 2, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 2, 21, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Class: LIN 371'},
 {'name': 'Govt. lectures, quiz, and assignment',
  'label': None,
  'start': datetime.datetime(2024, 2, 3, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 3, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'LM screening forms',
  'label': None,
  'start': datetime.datetime(2024, 2, 5, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Lockheed'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 5, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 5, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 5, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None,
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Class: SDS 334'},
 {'name': 'Book appt.',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 11, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Go over stats notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 11, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 6, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 6, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Class: SDS 334'},
 {'name': 'Update tayLyrics ',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Review Naive Bayes',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 12, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Review Naive Bayes + probability',
  'label': None,
  'start': datetime.datetime(2024, 2, 7, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 7, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Finish data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 17, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 17, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER',
  'category': 'Class: SDS 375'},
 {'name': 'Stats HW Q3',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Class: SDS 334'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 2, 11, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 11, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 12, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 12, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER',
  'category': 'Class: LIN 371'},
 {'name': 'Data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 2, 13, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Databases project drafting',
  'label': None,
  'start': datetime.datetime(2024, 2, 13, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 2, 13, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 13, 17, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'PCL',
  'category': 'Class: SDS 375'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 12, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 13, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL 4th',
  'category': 'Class: SDS 334'},
 {'name': 'Linguistics HW - perplexity',
  'label': None,
  'start': datetime.datetime(2024, 2, 14, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 14, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'PCL',
  'category': 'Class: LIN 371'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 15, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Go over stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 15, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 11, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'GDC SDS Lounge',
  'category': 'Class: SDS 334'},
 {'name': 'Linguistics HW - perplexity',
  'label': None,
  'start': datetime.datetime(2024, 2, 15, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 15, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics HW: perplexity',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 8, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Class: LIN 371'},
 {'name': 'Finish linguistics HW!',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 11, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 13, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 14, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Govt. sec. 5 vocab',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 17, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. Sec. 1 work',
  'label': None,
  'start': datetime.datetime(2024, 1, 17, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 1, 17, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. sec. 4 vocab',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 18, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. sec. 4 lectures',
  'label': None,
  'start': datetime.datetime(2024, 2, 8, 19, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 8, 19, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. sec. 4 lecture video 3',
  'label': None,
  'start': datetime.datetime(2024, 2, 9, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 9, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. sec. 4 lecture videos 4-5',
  'label': None,
  'start': datetime.datetime(2024, 2, 9, 11, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 9, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Dorm',
  'category': 'Class: GOV 310L'},
 {'name': 'Finish all govt. sec. 4 work',
  'label': None,
  'start': datetime.datetime(2024, 2, 10, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 10, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Home!',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt sec. 5 lectures',
  'label': None,
  'start': datetime.datetime(2024, 2, 16, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 16, 19, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'EER',
  'category': 'Class: GOV 310L'},
 {'name': 'Finish up govt. work',
  'label': None,
  'start': datetime.datetime(2024, 2, 17, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 17, 16, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Update tayLyrics',
  'label': None,
  'start': datetime.datetime(2024, 2, 18, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Stats notes and revision w/ Hannah and Lauren',
  'label': None,
  'start': datetime.datetime(2024, 2, 18, 19, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 18, 22, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'Jasement',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 19, 8, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 19, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 19, 15, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 19, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'Databases quizlet',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 8, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 9, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Databases review',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Class: CS 327E'},
 {'name': 'Databases flashcards',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 18, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER',
  'category': 'Class: CS 327E'},
 {'name': 'Databases quizlet',
  'label': None,
  'start': datetime.datetime(2024, 2, 20, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 20, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER',
  'category': 'Class: CS 327E'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 21, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 21, 19, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision (last-minute)',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 8, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Data viz. peer grading',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 11, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 11, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'tayLyrics updates',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 12, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'tayLyrics updates',
  'label': None,
  'start': datetime.datetime(2024, 2, 22, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 22, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Developing'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 23, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Govt. sec. 6 vocab',
  'label': None,
  'start': datetime.datetime(2024, 2, 23, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 11, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. sec. 6 lectures, quiz, and assignment',
  'label': None,
  'start': datetime.datetime(2024, 2, 23, 11, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 23, 13, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Naive Bayes recap',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 0, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 1, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 9, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 9, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 9, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 9, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Naive Bayes notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 14, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 16, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Start databases project',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 18, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 18, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: CS 327E'},
 {'name': 'Naive Bayes demo',
  'label': None,
  'start': datetime.datetime(2024, 2, 26, 18, 50, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 26, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Naive Bayes demo',
  'label': None,
  'start': datetime.datetime(2024, 2, 27, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 9, 18, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3,
  'minutes': 18.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Complete Naive Bayes demo',
  'label': None,
  'start': datetime.datetime(2024, 2, 27, 11, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 12, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Logistic regression revision',
  'label': None,
  'start': datetime.datetime(2024, 2, 27, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 27, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Logistic regression notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 28, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 28, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 28, 22, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None,
  'category': 'Class: SDS 375'},
 {'name': 'Logistic regression notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 8, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Finish up stats HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 11, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'GDC 7th',
  'category': 'Class: SDS 334'},
 {'name': 'Logistic regression notes',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Dorm',
  'category': 'Miscellaneous'},
 {'name': 'Finalize data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 18, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 18, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER',
  'category': 'Class: SDS 375'},
 {'name': 'Linguistics Q1',
  'label': None,
  'start': datetime.datetime(2024, 2, 29, 18, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 2, 29, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER',
  'category': 'Class: LIN 371'},
 {'name': 'Databases project 2',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 9, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Finish databases project',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 11, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 11, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 15, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Class: LIN 371'},
 {'name': 'Govt. sec. 7 vocab',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 15, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 15, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'PCL',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. lectures',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 15, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Class: GOV 310L'},
 {'name': 'Finish up govt. sec. 7 work',
  'label': None,
  'start': datetime.datetime(2024, 3, 1, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 1, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Logistic regression demo',
  'label': None,
  'start': datetime.datetime(2024, 3, 2, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 2, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 2, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 2, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Logistic regression demo',
  'label': None,
  'start': datetime.datetime(2024, 3, 3, 22, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 3, 22, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'LR cross-validation demo',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 9, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Perceptrons notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 13, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Perceptrons notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 14, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'ECJ',
  'category': 'Miscellaneous'},
 {'name': 'Stats HW Q1(a)(b)',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 4, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'Perceptrons notes (backprop.)',
  'label': None,
  'start': datetime.datetime(2024, 3, 4, 23, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 0, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Perceptrons notes (backprop.)',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 9, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Stats HW Q1(c)(d)',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 12, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats HW (rest of Q1)',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 14, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 15, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'Dorm',
  'category': 'Class: SDS 334'},
 {'name': 'Project planning',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 17, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 18, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Starting taylor_naive_bayes!',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Developing'},
 {'name': 'Play around w/ taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 5, 22, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 5, 23, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 10, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Govt. exam 1',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 12, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 15, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 16, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Class: SDS 334'},
 {'name': 'taylor_naive_bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 16, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'PCL',
  'category': 'Developing'},
 {'name': 'Ochem work session w/ Hannah',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 6, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Welch',
  'category': 'Miscellaneous'},
 {'name': 'taylor_naive_bayes script',
  'label': None,
  'start': datetime.datetime(2024, 3, 6, 23, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 0, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Data viz. HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 7, 9, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 9, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Linguistics work',
  'label': None,
  'start': datetime.datetime(2024, 3, 7, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 14, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Dorm',
  'category': 'Class: LIN 371'},
 {'name': 'CNS scholarship essays',
  'label': None,
  'start': datetime.datetime(2024, 3, 7, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 3, 7, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Opp. scholar application',
  'label': None,
  'start': datetime.datetime(2024, 3, 18, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 3, 18, 10, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 11, 7, tzinfo=tzoffset(None, -18000)),
  'hours': 0.2,
  'minutes': 12.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Project proposal',
  'label': None,
  'start': datetime.datetime(2024, 3, 18, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 18, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Databases Quizlet',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 8, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Finish databases Quizlet',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Databases project',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 11, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Twitter scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 19, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 19, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Project test code',
  'label': None,
  'start': datetime.datetime(2024, 3, 20, 1, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Databases project queries',
  'label': None,
  'start': datetime.datetime(2024, 3, 20, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Data scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 20, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 20, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Project code',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 0, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Presentation revision & prep.',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Dorm',
  'category': 'Class: LIN 371'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 21, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 21, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'PCL',
  'category': 'Class: LIN 371'},
 {'name': 'Databases revision x scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Project proposal x scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Project proposal x scraping',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Dorm',
  'category': 'Miscellaneous'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Govt. work (all)',
  'label': None,
  'start': datetime.datetime(2024, 3, 22, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 22, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Dorm',
  'category': 'Class: GOV 310L'},
 {'name': 'Complete data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 3, 23, 3, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 23, 3, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Class: SDS 375'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Scraping tweets + assigning results',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 11, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'SDS HW',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 11, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 12, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Scraping tweets + organizing repo',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Word embeddings notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Jackson School of Geoscience (JGB), 305 E 23rd St, Austin, TX 78712, USA',
  'category': 'Miscellaneous'},
 {'name': 'Word embeddings notes',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 16, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 17, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Tweet Naive Bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 18, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'PCL',
  'category': 'Class: LIN 371'},
 {'name': 'Nap',
  'label': None,
  'start': datetime.datetime(2024, 3, 25, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 25, 21, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Tweet Naive Bayes',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 1, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Class: LIN 371'},
 {'name': 'Data preprocessing pipeline',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Complete data collection + cont. Naive Bayes ',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Tweets Naive Bayes (new)',
  'label': None,
  'start': datetime.datetime(2024, 3, 26, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 26, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER',
  'category': 'Class: LIN 371'},
 {'name': 'Project cont. + SDS HW Q2',
  'label': None,
  'start': datetime.datetime(2024, 3, 27, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Gametime tweets analysis (study session w/ Hannah)',
  'label': None,
  'start': datetime.datetime(2024, 3, 27, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Project cont.',
  'label': None,
  'start': datetime.datetime(2024, 3, 27, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 27, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Welch',
  'category': 'Miscellaneous'},
 {'name': 'Project peer grading',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 9, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'NB prelim. conclusions',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Random project work',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': '3 Nights transposition',
  'label': None,
  'start': datetime.datetime(2024, 3, 28, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 28, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Govt. sec. 9 vocab.',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. video 9.1',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 9, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Govt. work (lectures + assignments)',
  'label': None,
  'start': datetime.datetime(2024, 3, 29, 11, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 3, 29, 12, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Dorm',
  'category': 'Class: GOV 310L'},
 {'name': 'SDS HW (not done yet)',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Hypothesis testing notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 12, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Matrix algebra notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 12, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 13, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Matrix algebra notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 1, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 1, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 9, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Databases project',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 9, 21, tzinfo=tzoffset(None, -18000)),
  'hours': 0.18333333333333332,
  'minutes': 11.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'SDS HW (almost done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 10, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Databases project queries',
  'label': None,
  'start': datetime.datetime(2024, 4, 2, 11, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 2, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Databases quiz 4 quizlet',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 8, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Data viz. HW (not done - fix)',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 13, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Data viz. HW (finished - check and submit tmr)',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 14, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Dorm',
  'category': 'Class: SDS 375'},
 {'name': 'Databases quizlet (done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 3, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 3, 16, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'Welch',
  'category': 'Class: CS 327E'},
 {'name': 'Go through Quizlet',
  'label': None,
  'start': datetime.datetime(2024, 4, 4, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 4, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'posit::conf registration',
  'label': None,
  'start': datetime.datetime(2024, 4, 4, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 4, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Scraping genius lyrics',
  'label': None,
  'start': datetime.datetime(2024, 4, 4, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 4, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Databases quiz review',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Govt. sec. 10 vocab.',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. lectures 10.1 - 10.5',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Finish govt. work',
  'label': None,
  'start': datetime.datetime(2024, 4, 5, 20, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 5, 20, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'Dorm',
  'category': 'Class: GOV 310L'},
 {'name': 'Laundry',
  'label': None,
  'start': datetime.datetime(2024, 4, 6, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 6, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Course planning',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 10, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Databases project (not done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 11, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'MLDS presentation',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Dorm',
  'category': 'MLDS'},
 {'name': 'Miscellaneous databases + SDS + MLDS work',
  'label': None,
  'start': datetime.datetime(2024, 4, 8, 20, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 8, 22, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Presentation overview',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 8, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 8, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Waterparks lyrics scraping',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Research comp. linguistics labs',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 11, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Presentation practice',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 17, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Databases project',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 17, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER',
  'category': 'Class: CS 327E'},
 {'name': 'Databases project (I give up)',
  'label': None,
  'start': datetime.datetime(2024, 4, 9, 20, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 9, 20, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Waterparks lyrics data cleaning',
  'label': None,
  'start': datetime.datetime(2024, 4, 10, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 10, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision (done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 10, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 10, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA',
  'category': 'Class: SDS 334'},
 {'name': 'Data viz. HW (not done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 11, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 11, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Registration planning',
  'label': None,
  'start': datetime.datetime(2024, 4, 11, 11, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 11, 12, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Govt. sec. 11 vocab.',
  'label': None,
  'start': datetime.datetime(2024, 4, 12, 11, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 12, 11, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. sec. 11 work (all)',
  'label': None,
  'start': datetime.datetime(2024, 4, 12, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 12, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Stats HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Linguistics research x project account IDs',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Scraping more tweets',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 11, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 12, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Scraping x data viz. project ',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Data viz. project 3',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 13, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 13, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Scraping x data viz. project',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Dorm',
  'category': 'Class: SDS 375'},
 {'name': 'Tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 4, 16, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 16, 9, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 15, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 15, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics HW',
  'label': None,
  'start': datetime.datetime(2024, 4, 16, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 16, 12, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'MLDS invoice',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 12, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 12, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Linguistics HW (one Q left)',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Stats HW (generally done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP ',
  'category': 'Class: SDS 334'},
 {'name': 'Linguistics HW (finished) + project',
  'label': None,
  'start': datetime.datetime(2024, 4, 17, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 17, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Go over HW w/ Anjie',
  'label': None,
  'start': datetime.datetime(2024, 4, 18, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 18, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'GDC 7th',
  'category': 'Miscellaneous'},
 {'name': 'Data viz. project (done)',
  'label': None,
  'start': datetime.datetime(2024, 4, 18, 17, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 18, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'EER',
  'category': 'Class: SDS 375'},
 {'name': 'Stats HW (finished!)',
  'label': None,
  'start': datetime.datetime(2024, 4, 19, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Dorm',
  'category': 'Class: SDS 334'},
 {'name': 'Govt. vocab and lectures (1-2)',
  'label': None,
  'start': datetime.datetime(2024, 4, 19, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 19, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. work (finished)',
  'label': None,
  'start': datetime.datetime(2024, 4, 20, 3, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 20, 4, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'Dorm',
  'category': 'Class: GOV 310L'},
 {'name': 'Databases quiz 5 revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 21, 14, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 21, 15, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Linguistics project',
  'label': None,
  'start': datetime.datetime(2024, 4, 21, 15, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 21, 16, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Databases revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 22, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: CS 327E'},
 {'name': 'Linguistics project (NB baselines and BERTweet)',
  'label': None,
  'start': datetime.datetime(2024, 4, 22, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 13, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics project (BERT and BERTweet)',
  'label': None,
  'start': datetime.datetime(2024, 4, 22, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 22, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA',
  'category': 'Class: LIN 371'},
 {'name': 'Linguistics final presentation',
  'label': None,
  'start': datetime.datetime(2024, 4, 23, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 9, 22, tzinfo=tzoffset(None, -18000)),
  'hours': 0.2,
  'minutes': 12.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'LIN project + presentation',
  'label': None,
  'start': datetime.datetime(2024, 4, 23, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 23, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Stats revision + F-tests notes',
  'label': None,
  'start': datetime.datetime(2024, 4, 24, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Stats revision',
  'label': None,
  'start': datetime.datetime(2024, 4, 24, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 24, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA',
  'category': 'Class: SDS 334'},
 {'name': 'Data viz. peer grading',
  'label': None,
  'start': datetime.datetime(2024, 4, 25, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 25, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Class: SDS 375'},
 {'name': 'Govt. work (NOT done) x laundry',
  'label': None,
  'start': datetime.datetime(2024, 4, 26, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 26, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. work (done!)',
  'label': None,
  'start': datetime.datetime(2024, 4, 27, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 27, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Class: GOV 310L'},
 {'name': 'Govt. exam 2 (done w/ govt!!!)',
  'label': None,
  'start': datetime.datetime(2024, 4, 29, 12, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 29, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: GOV 310L'},
 {'name': 'Study session w/ Hannah, Kenadi, Lauren, Sydney',
  'label': None,
  'start': datetime.datetime(2024, 4, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 14, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': 'Welch',
  'category': 'Miscellaneous'},
 {'name': 'Jasement study time w/ Hannah (and Lauren)',
  'label': None,
  'start': datetime.datetime(2024, 4, 30, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 4, 30, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'BERT models',
  'label': None,
  'start': datetime.datetime(2024, 5, 1, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 1, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Linguistics project (w/ Hannah and Lauren)',
  'label': None,
  'start': datetime.datetime(2024, 5, 2, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 2, 16, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Study w/ Hannah, Canon, and Lauren',
  'label': None,
  'start': datetime.datetime(2024, 5, 3, 11, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 3, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Linguistics research notes + email Jessy',
  'label': None,
  'start': datetime.datetime(2024, 5, 9, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Fort Bend County Libraries - Cinco Ranch Branch, 2620 Commercial Center Blvd, Katy, TX 77494, USA',
  'category': 'Class: LIN 371'},
 {'name': 'Waterparks lyric scraper',
  'label': None,
  'start': datetime.datetime(2024, 5, 20, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 20, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Waterparks lyrics game',
  'label': None,
  'start': datetime.datetime(2024, 5, 21, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 21, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Waterparks lyrics game',
  'label': None,
  'start': datetime.datetime(2024, 5, 21, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 21, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Waterparks lyrics game x read JURPA revision',
  'label': None,
  'start': datetime.datetime(2024, 5, 22, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 5, 22, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Book posit::conf hotel',
  'label': None,
  'start': datetime.datetime(2024, 6, 7, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 7, 12, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Misc. logistics',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 11, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'AI Factory workspaces',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 11, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 11, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'titanic workspace test',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 14, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Meeting prep',
  'label': None,
  'start': datetime.datetime(2024, 6, 10, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 10, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Meeting prep',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Intro to mistral course',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 14, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Finish intro to mistral course',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 14, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 15, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Langchain course 1 (2 vids left)',
  'label': None,
  'start': datetime.datetime(2024, 6, 11, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 11, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Misc. - looking over projects, setting up GitLab, etc.',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Gitlab setup (not done)',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'sklz-navigator',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz-navigator',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'Finish LangChain course 1',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 9, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Start prompting course',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 6, 12, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 12, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'sklz: outline and meeting agenda',
  'label': None,
  'start': datetime.datetime(2024, 6, 13, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz: sklz class',
  'label': None,
  'start': datetime.datetime(2024, 6, 13, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz: sklz class',
  'label': None,
  'start': datetime.datetime(2024, 6, 13, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 13, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 14, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 14, 13, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 4.75,
  'minutes': 285.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 17, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 17, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 17, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 17, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 13, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 18, 13, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 18, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 19, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 19, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 19, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 19, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 7.75,
  'minutes': 465.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 20, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 20, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.25,
  'minutes': 255.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 20, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 20, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 21, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 21, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 4.25,
  'minutes': 255.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'internshipDatabase',
  'label': None,
  'start': datetime.datetime(2024, 6, 22, 23, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 23, 1, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'tayLyrics -> streamlit',
  'label': None,
  'start': datetime.datetime(2024, 6, 24, 23, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 0, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 25, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 25, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 25, 14, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 25, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 26, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 26, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 26, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 26, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 26, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 26, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 27, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 27, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 27, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 27, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 6, 28, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 6, 28, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 1, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 1, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 1, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.25,
  'minutes': 315.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 2, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 2, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 3, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 3, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 3, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 3, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'Export and Sensitive Info Training',
  'label': None,
  'start': datetime.datetime(2024, 7, 5, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 5, 9, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'sklz: new hire profile',
  'label': None,
  'start': datetime.datetime(2024, 7, 5, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 5, 10, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'tayLyrics',
  'label': None,
  'start': datetime.datetime(2024, 7, 7, 21, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 7, 23, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 9, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 10, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.75,
  'minutes': 345.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 10, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 10, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 11, 19, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 11, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 9, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz x Wifi / VPN issues',
  'label': None,
  'start': datetime.datetime(2024, 7, 9, 8, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 9, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 12, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 12, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 8.0,
  'minutes': 480.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 15, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 15, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 15, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 15, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 13, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 15, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 16, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 16, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 17, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 17, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 11, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 17, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 17, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 6.0,
  'minutes': 360.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 18, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 18, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.75,
  'minutes': 225.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 18, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 18, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'Fix computer + sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 21, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 21, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'Aero GSC notes + sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 22, 17, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 17, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 22, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.5,
  'minutes': 330.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 22, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 22, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 9, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 23, 13, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 23, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 5.166666666666667,
  'minutes': 310.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz + aero gsc',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 8, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 25, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 24, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 24, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - spectral clustering prelim.',
  'label': None,
  'start': datetime.datetime(2024, 7, 25, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz + aero gsc',
  'label': None,
  'start': datetime.datetime(2024, 7, 25, 10, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 25, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.916666666666667,
  'minutes': 295.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'setting up new workspace + sklz ',
  'label': None,
  'start': datetime.datetime(2024, 7, 26, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 26, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering and PCA',
  'label': None,
  'start': datetime.datetime(2024, 7, 29, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 29, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 29, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.0,
  'minutes': 300.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - 3d clustering',
  'label': None,
  'start': datetime.datetime(2024, 7, 30, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 30, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.25,
  'minutes': 135.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 31, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 5.25,
  'minutes': 315.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 7, 31, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering cont.',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz + presentation prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 7, 31, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 7, 31, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 9, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering cont.',
  'label': None,
  'start': datetime.datetime(2024, 8, 1, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 1, 17, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'misc.',
  'label': None,
  'start': datetime.datetime(2024, 8, 2, 0, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 2, 2, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'misc. + developing',
  'label': None,
  'start': datetime.datetime(2024, 8, 5, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 5, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 9.5,
  'minutes': 570.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'sklz - update skills job',
  'label': None,
  'start': datetime.datetime(2024, 8, 6, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'sklz - update skills job',
  'label': None,
  'start': datetime.datetime(2024, 8, 6, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 6, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 6, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 7, 8, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 7, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 6.5,
  'minutes': 390.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc',
  'label': None,
  'start': datetime.datetime(2024, 8, 7, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 7, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 8, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'aero gsc - clustering',
  'label': None,
  'start': datetime.datetime(2024, 8, 8, 13, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 15, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': None,
  'category': 'Lockheed'},
 {'name': 'misc',
  'label': None,
  'start': datetime.datetime(2024, 8, 8, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 8, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Gone to Engineering + registration prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 21, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 21, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'MLDS Data Viz. presentation',
  'label': None,
  'start': datetime.datetime(2024, 8, 22, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 22, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': None,
  'category': 'Class: SDS 375'},
 {'name': 'Data viz. presentation cont.',
  'label': None,
  'start': datetime.datetime(2024, 8, 22, 19, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 22, 23, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': None,
  'category': 'Class: SDS 375'},
 {'name': 'tayLyrics - AWS',
  'label': None,
  'start': datetime.datetime(2024, 8, 23, 2, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 23, 3, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Misc. prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'William C. Powers Student Activity Center, 2201 Speedway, Austin, TX 78712, USA',
  'category': 'Miscellaneous'},
 {'name': "Edit Justin's essays",
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'William C. Powers Student Activity Center, 2201 Speedway, Austin, TX 78712, USA',
  'category': 'Miscellaneous'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 11, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 11, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Life Science Library, Main, 2400 Inner Campus Drive #220, Austin, TX 78712, USA',
  'category': 'Miscellaneous'},
 {'name': 'tayLyrics - added hints limit',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.6666666666666667,
  'minutes': 100.0,
  'location': 'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA',
  'category': 'Developing'},
 {'name': 'MLDS corporate package',
  'label': None,
  'start': datetime.datetime(2024, 8, 26, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 26, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'EER',
  'category': 'MLDS'},
 {'name': 'MLDS intro stuff',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 10, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'C S 309 intro modules (not done)',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Update resume',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 - completed intro module',
  'label': None,
  'start': datetime.datetime(2024, 8, 27, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 27, 17, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Update MLDS hornslink',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 10, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Read + annotate paper',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 11, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Read and annotate other paper',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 12, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 12, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Research notes',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 12, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'MLDS officer meeting prep. + first meeting prep',
  'label': None,
  'start': datetime.datetime(2024, 8, 28, 22, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 28, 23, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'MLDS'},
 {'name': 'Research ideas',
  'label': None,
  'start': datetime.datetime(2024, 8, 29, 8, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 29, 9, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'SDS 336 HW1',
  'label': None,
  'start': datetime.datetime(2024, 8, 29, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 8, 29, 16, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER',
  'category': 'Class: SDS 336'},
 {'name': 'SDS 364 HW',
  'label': None,
  'start': datetime.datetime(2024, 9, 3, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 9, 3, 15, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 3, 16, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research work',
  'label': None,
  'start': datetime.datetime(2024, 9, 4, 14, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 15, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Research stuff - figured out scraper',
  'label': None,
  'start': datetime.datetime(2024, 9, 4, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 4, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Misc. - MLDS and lyriguessr stuff',
  'label': None,
  'start': datetime.datetime(2024, 9, 5, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 5, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Misc. + UTCS setup',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS 334 quiz 2',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Research approach',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Misc. - lyriguessr and tweet scraping',
  'label': None,
  'start': datetime.datetime(2024, 9, 6, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 6, 12, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'lyriguessr - promo graphics',
  'label': None,
  'start': datetime.datetime(2024, 9, 8, 1, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 8, 3, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': None,
  'category': 'Developing'},
 {'name': 'Scheduling',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 9, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': "Place Potbelly's order",
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Research - filtering parent tweets',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'Research - scraping game events w/ Hannah and Sydney',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 12, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 14, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'The Union (outside)',
  'category': 'Research'},
 {'name': 'Research - scraping replies',
  'label': None,
  'start': datetime.datetime(2024, 9, 9, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 9, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'Engineering Education and Research Center (EER), 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Research'},
 {'name': 'C S 326E EX0 + C S 309 pre-class work (NOT DONE)',
  'label': None,
  'start': datetime.datetime(2024, 9, 10, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 309 pre-class modules (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 10, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'lyriguessr promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 10, 17, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 10, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER w/ Hannah',
  'category': 'Developing'},
 {'name': 'Misc. - lyriguessr promo, Apple app., Chevron email, etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 11, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Internship apps',
  'label': None,
  'start': datetime.datetime(2024, 9, 11, 15, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER',
  'category': 'Recruitment'},
 {'name': 'OOEF',
  'label': None,
  'start': datetime.datetime(2024, 9, 11, 16, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 11, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'EER',
  'category': 'MLDS'},
 {'name': 'Misc. - tayLyrics promo, HTTP vids',
  'label': None,
  'start': datetime.datetime(2024, 9, 12, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 12, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'C S 309 HW1',
  'label': None,
  'start': datetime.datetime(2024, 9, 13, 10, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'SDS 336 Quiz 3',
  'label': None,
  'start': datetime.datetime(2024, 9, 13, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 13, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'C S 326E Hands-on DNS 1',
  'label': None,
  'start': datetime.datetime(2024, 9, 15, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 15, 19, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None,
  'category': 'Class: CS 326E'},
 {'name': 'Misc. - MLDS catering & funds + schedule assignments, etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'lyriguessr - analytics, Sabrina dataset',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 11, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 11, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Misc. - lyriguessr promo, The Trade Desk app., C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 14, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research - LLM wrapper',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 17, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Research LLM + C S 309 readings (1 & 2)',
  'label': None,
  'start': datetime.datetime(2024, 9, 16, 18, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 16, 18, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Misc. - research LLM + lyriguessr dev.',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 0, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 2, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': None,
  'category': 'Research'},
 {'name': 'Misc. - C S 309 readings (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 pre-class modules (almost done) + research LLM',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 16, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Misc. - research stuff, codesignal practice, etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 17, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 17, 18, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Research - score-matching',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'tayLyrics promo (emailed Prof. Scala)',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'lyriguessr promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 17, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Developing'},
 {'name': 'C S 326E quizzes (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER',
  'category': 'Class: CS 326E'},
 {'name': 'OOEF & Invoice form',
  'label': None,
  'start': datetime.datetime(2024, 9, 18, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 18, 18, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'EER',
  'category': 'MLDS'},
 {'name': 'Misc. - lyriguessr',
  'label': None,
  'start': datetime.datetime(2024, 9, 19, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Misc. ',
  'label': None,
  'start': datetime.datetime(2024, 9, 19, 16, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 19, 17, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'SDS 336 quiz 4 (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 20, 9, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'TTD CodeSignal (DAMN IT)',
  'label': None,
  'start': datetime.datetime(2024, 9, 20, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 20, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 9, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Schedule assignments',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'waterparksGuessr updates + promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 10, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Research - tweet filtering, location generalizing',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.8333333333333335,
  'minutes': 170.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 13, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Research - location mapping + waterparksGuessr promo',
  'label': None,
  'start': datetime.datetime(2024, 9, 23, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 23, 18, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 2.5833333333333335,
  'minutes': 155.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'C S 309 pre-class module, misc. MLDS stuff',
  'label': None,
  'start': datetime.datetime(2024, 9, 24, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 10, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 9, 24, 16, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 24, 16, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'lyriguessr - tried to set up a MAIN analytics property but failed',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Research - cleaning tweets, looking for patterns',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 10, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 12, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'WCP',
  'category': 'Class: LIN 371'},
 {'name': 'MLDS stuff - reserved food card for social, completed OOEF for Tues.',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 15, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 15, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'MLDS'},
 {'name': 'SDS 336 project data setup etc.',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 16, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Class: SDS 336'},
 {'name': 'Research - examining trends, defining collectivism',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Research'},
 {'name': 'Research - collectivism mapping, new wordclouds',
  'label': None,
  'start': datetime.datetime(2024, 9, 25, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 25, 19, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA',
  'category': 'Research'},
 {'name': 'Misc. - I forgot',
  'label': None,
  'start': datetime.datetime(2024, 9, 26, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 26, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 326E EX1 & diagram',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 309 HW2',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 10, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 11, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'SDS 336 quiz 5',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'Research - modularizing parent tweet preprocessing / filtering',
  'label': None,
  'start': datetime.datetime(2024, 9, 27, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 27, 17, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER',
  'category': 'Class: LIN 371'},
 {'name': 'C S 326E project 1 (did nothing)',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 326E textbook notes',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 326E project (parse_server_info)',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 326E project',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 16, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER',
  'category': 'Class: CS 326E'},
 {'name': 'Research - modularization of preprocessing',
  'label': None,
  'start': datetime.datetime(2024, 9, 30, 16, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 9, 30, 16, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Recruitment'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 9, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 10, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 10, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 10, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Recruitment'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 10, 1, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 1, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Recruitment'},
 {'name': 'C S 326E project',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 11, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'Email Apple',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 12, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 326E project',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 12, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 13, 40, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'Research - tweet preprocessing, collectivism vs individualism, logistic regression',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 15, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 2.9166666666666665,
  'minutes': 175.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Class: LIN 371'},
 {'name': 'OOEF & invoice form',
  'label': None,
  'start': datetime.datetime(2024, 10, 2, 18, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 2, 18, 53, tzinfo=tzoffset(None, -18000)),
  'hours': 0.13333333333333333,
  'minutes': 8.0,
  'location': 'EER',
  'category': 'MLDS'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 3, 16, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Recruitment'},
 {'name': 'internship_database - resources table',
  'label': None,
  'start': datetime.datetime(2024, 10, 3, 18, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 3, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER',
  'category': 'Developing'},
 {'name': 'Misc. - C S 326E submissions, internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 4, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 4, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'SDS 336 quiz 6',
  'label': None,
  'start': datetime.datetime(2024, 10, 4, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 4, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'Misc. developing + sabrinaGuessr promo',
  'label': None,
  'start': datetime.datetime(2024, 10, 4, 11, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 4, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Misc. - internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Recruitment'},
 {'name': "Order Tiff's",
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 9, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 10, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'SP25 course planning',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 10, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 10, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 326E revision (finished Ch. 1)',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 14, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'Networking revision',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 16, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER',
  'category': 'Class: CS 326E'},
 {'name': 'Networking revision (cont.)',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 16, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 17, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: CS 326E'},
 {'name': 'Networking revision (Ch. 2; not done)',
  'label': None,
  'start': datetime.datetime(2024, 10, 7, 17, 40, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 7, 19, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA',
  'category': 'Class: CS 326E'},
 {'name': 'Networking quizzes',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Networking revision (Ch. 2 DNS)',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 16, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Networking revision (finished Ch. 2, started Ch. 3)',
  'label': None,
  'start': datetime.datetime(2024, 10, 8, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 8, 18, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Class: CS 326E'},
 {'name': 'Networking revision (Ch. 3 done; started structured exam revision)',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 13, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 4.166666666666667,
  'minutes': 250.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'Networking revision (cheatsheet)',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 16, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Class: CS 326E'},
 {'name': 'Research - looking into pronouns',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 18, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Reading group OOEF, invoice form',
  'label': None,
  'start': datetime.datetime(2024, 10, 9, 18, 25, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 9, 18, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'EER',
  'category': 'MLDS'},
 {'name': 'Networking revision',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 9, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'Mezes Hall, The University of Texas at Austin, 154 W 21st St, Austin, TX 78712, USA',
  'category': 'Class: CS 326E'},
 {'name': 'Networking revision - filled cheat sheet',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 12, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'journal_analysis - example ',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 14, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 14, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'journal_analysis - started UI',
  'label': None,
  'start': datetime.datetime(2024, 10, 10, 16, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 10, 17, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Developing'},
 {'name': 'SDS 336 quiz 7',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'SDS 336 quiz 7',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 12, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'C S 309 HW3',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 12, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 12, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 HW3',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 13, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 13, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': None,
  'category': 'Class: CS 309'},
 {'name': 'OOEF & invoice form',
  'label': None,
  'start': datetime.datetime(2024, 10, 11, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 11, 17, 5, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': None,
  'category': 'MLDS'},
 {'name': 'Misc. - assignments',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 9, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'NVIDIA student program app.',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': "Order Tiff's x2",
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 10, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 14, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 14, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'EER',
  'category': 'Recruitment'},
 {'name': 'C S 309 reading',
  'label': None,
  'start': datetime.datetime(2024, 10, 15, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 9, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'tayLyrics promo',
  'label': None,
  'start': datetime.datetime(2024, 10, 15, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 15, 18, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'EER',
  'category': 'Developing'},
 {'name': 'Misc. - C S 309 pre-class reflection, tayLyrics',
  'label': None,
  'start': datetime.datetime(2024, 10, 16, 9, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 9, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5833333333333334,
  'minutes': 35.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research + SDS 336 project EDA',
  'label': None,
  'start': datetime.datetime(2024, 10, 16, 10, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 16, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.0,
  'minutes': 180.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'OOEFs and invoice forms',
  'label': None,
  'start': datetime.datetime(2024, 10, 17, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 17, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Email Jessica abt HEB Bakery',
  'label': None,
  'start': datetime.datetime(2024, 10, 18, 10, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 11, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS quiz 8',
  'label': None,
  'start': datetime.datetime(2024, 10, 18, 11, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 18, 12, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Misc. - scheduling assignments, MLDS stuff',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 9, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 9, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 10, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Recruitment'},
 {'name': 'Research - spurs preprocessing, nicknaming & NER',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Misc. - research nicknames; MLDS HEB stuff',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 15, 55, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 16, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Research nicknames - outlined goals, mapped spurs nicknames',
  'label': None,
  'start': datetime.datetime(2024, 10, 21, 18, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 21, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 9, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Misc. - research (club accounts)',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 10, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Respond to Apple',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 17, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 18, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 videos (done)',
  'label': None,
  'start': datetime.datetime(2024, 10, 22, 18, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 22, 18, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 10, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Recruitment'},
 {'name': 'C S 309 pre-class reflection',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 10, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 10, 20, tzinfo=tzoffset(None, -18000)),
  'hours': 0.08333333333333333,
  'minutes': 5.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research - finding accounts, corresponding IDs',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 10, 50, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 13, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 2.6666666666666665,
  'minutes': 160.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Treasurer resources doc',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 16, 10, tzinfo=tzoffset(None, -18000)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Research - tweetscraper',
  'label': None,
  'start': datetime.datetime(2024, 10, 23, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 23, 18, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Research - resetting the scraping process',
  'label': None,
  'start': datetime.datetime(2024, 10, 24, 9, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 24, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Misc. - scraping tweets, lounging, respond to Meta, etc.',
  'label': None,
  'start': datetime.datetime(2024, 10, 24, 15, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 24, 17, 55, tzinfo=tzoffset(None, -18000)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'GDC',
  'category': 'Class: LIN 371'},
 {'name': 'Message Abby',
  'label': None,
  'start': datetime.datetime(2024, 10, 25, 10, 20, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 25, 10, 28, tzinfo=tzoffset(None, -18000)),
  'hours': 0.13333333333333333,
  'minutes': 8.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS 336 quiz 9 + C S 309 HW4',
  'label': None,
  'start': datetime.datetime(2024, 10, 25, 10, 35, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 25, 12, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research - data analysis',
  'label': None,
  'start': datetime.datetime(2024, 10, 25, 12, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 25, 13, 35, tzinfo=tzoffset(None, -18000)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Misc. - scheduling assignments, reply to recruiters, registration planning, etc.',
  'label': None,
  'start': datetime.datetime(2024, 10, 28, 9, 5, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 10, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 1.3333333333333333,
  'minutes': 80.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Misc. - encyclopedia (intergroup bias)',
  'label': None,
  'start': datetime.datetime(2024, 10, 28, 10, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 11, 45, tzinfo=tzoffset(None, -18000)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Misc. - interview notes, encyclopedia',
  'label': None,
  'start': datetime.datetime(2024, 10, 28, 16, 15, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 28, 17, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'EER',
  'category': 'Developing'},
 {'name': 'Misc. - emails, linguistic intergroup bias',
  'label': None,
  'start': datetime.datetime(2024, 10, 29, 9, 45, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 10, 50, tzinfo=tzoffset(None, -18000)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Misc. - MLDS, C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 10, 29, 17, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 29, 19, 15, tzinfo=tzoffset(None, -18000)),
  'hours': 1.75,
  'minutes': 105.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Encylopedia',
  'label': None,
  'start': datetime.datetime(2024, 10, 30, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 9, 25, tzinfo=tzoffset(None, -18000)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Misc. - mostly SDS 336 project adding features (VADER + length) and labels',
  'label': None,
  'start': datetime.datetime(2024, 10, 30, 9, 30, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 13, 0, tzinfo=tzoffset(None, -18000)),
  'hours': 3.5,
  'minutes': 210.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'SDS 336 project - training RF + making slides',
  'label': None,
  'start': datetime.datetime(2024, 10, 30, 17, 0, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 30, 18, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'PCL',
  'category': 'Class: SDS 336'},
 {'name': 'Misc. - msg. Venkat, SDS project presentation',
  'label': None,
  'start': datetime.datetime(2024, 10, 31, 9, 10, tzinfo=tzoffset(None, -18000)),
  'end': datetime.datetime(2024, 10, 31, 9, 30, tzinfo=tzoffset(None, -18000)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Misc. - schedule assignments, MLDS, etc.',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 9, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Integra data assessment',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 10, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'Research - Big Six nicknames',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 10, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 13, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Research - nicknaming',
  'label': None,
  'start': datetime.datetime(2024, 11, 4, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 4, 18, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Misc. - registration planning',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 9, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 9, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 pre-class module (not done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 10, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 16, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 0.6666666666666666,
  'minutes': 40.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Class: CS 309'},
 {'name': 'Research - nicknames (other clubs)',
  'label': None,
  'start': datetime.datetime(2024, 11, 5, 17, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 5, 18, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Research - assigning scores + game info, player matching',
  'label': None,
  'start': datetime.datetime(2024, 11, 6, 9, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 13, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 4.0,
  'minutes': 240.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Research - cleaning player_identification',
  'label': None,
  'start': datetime.datetime(2024, 11, 6, 16, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 6, 18, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 2.3333333333333335,
  'minutes': 140.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Registration prep',
  'label': None,
  'start': datetime.datetime(2024, 11, 7, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 7, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS 336 quiz 11',
  'label': None,
  'start': datetime.datetime(2024, 11, 8, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 8, 17, 5, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Home',
  'category': 'Class: SDS 336'},
 {'name': 'C S 309 HW5',
  'label': None,
  'start': datetime.datetime(2024, 11, 8, 17, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 8, 18, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'Home',
  'category': 'Class: CS 309'},
 {'name': 'MLDS NLP slides',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 0, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 0, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Home',
  'category': 'MLDS'},
 {'name': 'Schedule assignments',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 9, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 0.16666666666666666,
  'minutes': 10.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'MLDS NLP slides',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 11, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'WCP',
  'category': 'MLDS'},
 {'name': 'Research - win probability',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 11, 25, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 13, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0833333333333335,
  'minutes': 125.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Research - win probability model features',
  'label': None,
  'start': datetime.datetime(2024, 11, 11, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 11, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Presentation run-through',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 10, 10, tzinfo=tzoffset(None, -21600)),
  'hours': 0.9166666666666666,
  'minutes': 55.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 readings',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 10, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 11, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research - win prob. model',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 11, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'Presentation prep',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 16, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 16, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 17, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Presentation prep',
  'label': None,
  'start': datetime.datetime(2024, 11, 12, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 12, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'EER',
  'category': 'Miscellaneous'},
 {'name': 'Misc.',
  'label': None,
  'start': datetime.datetime(2024, 11, 13, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 12, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.75,
  'minutes': 165.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA',
  'category': 'Miscellaneous'},
 {'name': 'Research - looking into restructuring model',
  'label': None,
  'start': datetime.datetime(2024, 11, 13, 17, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 13, 19, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'Home',
  'category': 'Research'},
 {'name': 'Misc. - project update, etc.',
  'label': None,
  'start': datetime.datetime(2024, 11, 14, 9, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 9, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS 336 HW12',
  'label': None,
  'start': datetime.datetime(2024, 11, 14, 15, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 14, 16, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 0.5,
  'minutes': 30.0,
  'location': 'Home',
  'category': 'Class: SDS 336'},
 {'name': 'Schedule assignments, misc. tasks',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 9, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 9, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS 336 paper presentation',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 13, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'Encyclopedia - adding ideas to ideabank',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 13, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 13, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 0.3333333333333333,
  'minutes': 20.0,
  'location': 'WCP',
  'category': 'Developing'},
 {'name': 'Research - LWP model (data manip.)',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 18, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 18, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Research - LWP model',
  'label': None,
  'start': datetime.datetime(2024, 11, 18, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 18, 17, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': 'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
  'category': 'Research'},
 {'name': 'Presentation practice',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 9, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 9, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'C S 309 pre-class module (not done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 9, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 10, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 pre-class module (done)',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 16, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 17, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.8333333333333334,
  'minutes': 50.0,
  'location': 'EER',
  'category': 'Class: CS 309'},
 {'name': 'Research - LWP model',
  'label': None,
  'start': datetime.datetime(2024, 11, 19, 17, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 19, 18, 50, tzinfo=tzoffset(None, -21600)),
  'hours': 1.1666666666666667,
  'minutes': 70.0,
  'location': 'EER',
  'category': 'Research'},
 {'name': 'Research - LWP model, scraping weekly standings',
  'label': None,
  'start': datetime.datetime(2024, 11, 20, 16, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 20, 18, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 2.1666666666666665,
  'minutes': 130.0,
  'location': 'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA',
  'category': 'Research'},
 {'name': 'Research - scraping standings',
  'label': None,
  'start': datetime.datetime(2024, 11, 21, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 21, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'SDS 336 Quiz 13 w/ Anjie',
  'label': None,
  'start': datetime.datetime(2024, 11, 22, 20, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 11, 22, 21, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 0.75,
  'minutes': 45.0,
  'location': 'Peter T. Flawn Academic Center (FAC), 2304 Whitis Ave, Austin, TX 78712, USA',
  'category': 'Class: SDS 336'},
 {'name': 'Misc. - scheduling assignments, etc.',
  'label': None,
  'start': datetime.datetime(2024, 12, 2, 9, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 9, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'WCP',
  'category': 'Miscellaneous'},
 {'name': 'SDS 336 project - encoding keywords',
  'label': None,
  'start': datetime.datetime(2024, 12, 2, 9, 40, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 2, 10, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'C S 309 pre-class module',
  'label': None,
  'start': datetime.datetime(2024, 12, 3, 18, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 3, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Class: CS 309'},
 {'name': 'Research - nickname stats, in-group/out-group stuff',
  'label': None,
  'start': datetime.datetime(2024, 12, 4, 12, 45, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 14, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.5,
  'minutes': 90.0,
  'location': 'WCP',
  'category': 'Class: SDS 334'},
 {'name': 'Research + SDS 336 group project',
  'label': None,
  'start': datetime.datetime(2024, 12, 4, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 4, 18, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA',
  'category': 'Class: SDS 336'},
 {'name': 'Research - in/out-group referrals',
  'label': None,
  'start': datetime.datetime(2024, 12, 5, 11, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 5, 12, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'WCP',
  'category': 'Research'},
 {'name': 'C S 309 Ethics Project',
  'label': None,
  'start': datetime.datetime(2024, 12, 6, 13, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 16, 55, tzinfo=tzoffset(None, -21600)),
  'hours': 3.6666666666666665,
  'minutes': 220.0,
  'location': 'Life Science Library, Main, 2400 Inner Campus Drive #220, Austin, TX 78712, USA',
  'category': 'Class: CS 309'},
 {'name': 'C S 309 Ethics Project cont.',
  'label': None,
  'start': datetime.datetime(2024, 12, 6, 17, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 19, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 2.0,
  'minutes': 120.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA',
  'category': 'Class: CS 309'},
 {'name': 'Visa apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 6, 19, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 6, 19, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': 'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA',
  'category': 'Recruitment'},
 {'name': 'Misc. - SDS 336 report, recruiting',
  'label': None,
  'start': datetime.datetime(2024, 12, 9, 10, 55, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 9, 15, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 4.083333333333333,
  'minutes': 245.0,
  'location': 'WCP',
  'category': 'Class: SDS 336'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 9, 18, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 9, 19, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': 'EER',
  'category': 'Recruitment'},
 {'name': 'Misc. SDS 336 report, LinkedIn networking',
  'label': None,
  'start': datetime.datetime(2024, 12, 10, 9, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 10, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 2.5,
  'minutes': 150.0,
  'location': 'WCP',
  'category': 'Class: CS 326E'},
 {'name': 'Misc. - LinkedIn networking + research (finally made in/out-group nicknaming plots)',
  'label': None,
  'start': datetime.datetime(2024, 12, 10, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 10, 17, 20, tzinfo=tzoffset(None, -21600)),
  'hours': 2.8333333333333335,
  'minutes': 170.0,
  'location': 'PCL w/ Christine and Anjie',
  'category': 'Class: CS 326E'},
 {'name': 'Misc. - research + LinkedIn networking',
  'label': None,
  'start': datetime.datetime(2024, 12, 11, 14, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 3.25,
  'minutes': 195.0,
  'location': 'PCL',
  'category': 'Class: CS 326E'},
 {'name': 'Edit report',
  'label': None,
  'start': datetime.datetime(2024, 12, 11, 19, 20, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 11, 19, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 0.25,
  'minutes': 15.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Misc. - Visa email',
  'label': None,
  'start': datetime.datetime(2024, 12, 12, 10, 35, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 12, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.4166666666666667,
  'minutes': 85.0,
  'location': 'PCL',
  'category': 'Miscellaneous'},
 {'name': 'Dashboard',
  'label': None,
  'start': datetime.datetime(2024, 12, 17, 16, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 17, 17, 45, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Miscellaneous'},
 {'name': 'Internship apps',
  'label': None,
  'start': datetime.datetime(2024, 12, 18, 2, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 18, 2, 40, tzinfo=tzoffset(None, -21600)),
  'hours': 0.4166666666666667,
  'minutes': 25.0,
  'location': None,
  'category': 'Recruitment'},
 {'name': 'Networking + internship apps. (5)',
  'label': None,
  'start': datetime.datetime(2024, 12, 17, 2, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 17, 3, 30, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Class: CS 326E'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 19, 10, 10, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 12, 0, tzinfo=tzoffset(None, -21600)),
  'hours': 1.8333333333333333,
  'minutes': 110.0,
  'location': 'Fort Bend County Libraries - Cinco Ranch Branch, 2620 Commercial Center Blvd, Katy, TX 77494, USA',
  'category': 'Recruitment'},
 {'name': 'LinkedIn networking + cold emailing',
  'label': None,
  'start': datetime.datetime(2024, 12, 19, 14, 15, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 19, 17, 25, tzinfo=tzoffset(None, -21600)),
  'hours': 3.1666666666666665,
  'minutes': 190.0,
  'location': None,
  'category': 'Class: CS 326E'},
 {'name': 'Linkedin networking',
  'label': None,
  'start': datetime.datetime(2024, 12, 20, 16, 0, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 20, 17, 15, tzinfo=tzoffset(None, -21600)),
  'hours': 1.25,
  'minutes': 75.0,
  'location': None,
  'category': 'Class: CS 326E'},
 {'name': 'Linkedin networking + cold emailing',
  'label': None,
  'start': datetime.datetime(2024, 12, 21, 1, 30, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 21, 2, 35, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0833333333333333,
  'minutes': 65.0,
  'location': None,
  'category': 'Class: CS 326E'},
 {'name': 'Internship apps.',
  'label': None,
  'start': datetime.datetime(2024, 12, 29, 2, 5, tzinfo=tzoffset(None, -21600)),
  'end': datetime.datetime(2024, 12, 29, 3, 5, tzinfo=tzoffset(None, -21600)),
  'hours': 1.0,
  'minutes': 60.0,
  'location': None,
  'category': 'Recruitment'}]
labeled_blocks = pd.DataFrame(labeled_blocks)
labeled_blocks[labeled_blocks["category"] == "Miscellaneous"]#["name"].unique()
name label start end hours minutes location category
17 Probability review None 2024-01-29 11:15:00-06:00 2024-01-29 13:15:00-06:00 2.000000 120.0 WCP Miscellaneous
33 Laundry None 2024-02-02 13:00:00-06:00 2024-02-02 14:30:00-06:00 1.500000 90.0 None Miscellaneous
41 Book appt. None 2024-02-06 11:15:00-06:00 2024-02-06 11:30:00-06:00 0.250000 15.0 None Miscellaneous
46 Review Naive Bayes None 2024-02-07 12:30:00-06:00 2024-02-07 13:15:00-06:00 0.750000 45.0 PCL Miscellaneous
47 Review Naive Bayes + probability None 2024-02-07 17:00:00-06:00 2024-02-07 18:00:00-06:00 1.000000 60.0 PCL Miscellaneous
... ... ... ... ... ... ... ... ...
597 Presentation practice None 2024-11-19 09:20:00-06:00 2024-11-19 09:35:00-06:00 0.250000 15.0 WCP Miscellaneous
604 Misc. - scheduling assignments, etc. None 2024-12-02 09:20:00-06:00 2024-12-02 09:35:00-06:00 0.250000 15.0 WCP Miscellaneous
618 Edit report None 2024-12-11 19:20:00-06:00 2024-12-11 19:35:00-06:00 0.250000 15.0 None Miscellaneous
619 Misc. - Visa email None 2024-12-12 10:35:00-06:00 2024-12-12 12:00:00-06:00 1.416667 85.0 PCL Miscellaneous
620 Dashboard None 2024-12-17 16:30:00-06:00 2024-12-17 17:45:00-06:00 1.250000 75.0 None Miscellaneous

129 rows × 8 columns

grouped_blocks = labeled_blocks.groupby("category")[["minutes", "hours"]].sum()
grouped_blocks
minutes hours
category
Class: CS 309 2065.0 34.416667
Class: CS 326E 2415.0 40.250000
Class: CS 327E 1341.0 22.350000
Class: GOV 310L 2300.0 38.333333
Class: LIN 371 3862.0 64.366667
Class: SDS 334 3590.0 59.833333
Class: SDS 336 1650.0 27.500000
Class: SDS 375 1020.0 17.000000
Developing 2520.0 42.000000
Lockheed 15110.0 251.833333
MLDS 700.0 11.666667
Miscellaneous 7591.0 126.516667
Recruitment 1340.0 22.333333
Research 3555.0 59.250000
fig = go.Figure(data=[go.Pie(labels=grouped_blocks.index, 
                             values=grouped_blocks["minutes"], 
                             hole=.2,
                             marker=dict(line=dict(color="black", width=1)),
                             hovertemplate=('<b>%{label}</b><br>' 
                                            'Minutes: %{value}<br>' 
                                            'Pct.: %{percent:.2%}<br>' 
                                            '<extra></extra>'))])
fig.update_layout(title = "Time Distribution by Label")
fig.show()
labeled_blocks["location"].unique()
array([None, 'PCL 4.424', 'PCL 4.110', 'PCL 3.110', 'WCP', 'EER',
       'SZB 3.814',
       'Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA', 'PCL',
       'Dorm (floor)', 'Dorm', 'PCL 4th', 'GDC SDS Lounge', 'Home!',
       'Jasement', 'GDC 7th', 'ECJ', 'Welch',
       'Jackson School of Geoscience (JGB), 305 E 23rd St, Austin, TX 78712, USA',
       'WCP ',
       'Fort Bend County Libraries - Cinco Ranch Branch, 2620 Commercial Center Blvd, Katy, TX 77494, USA',
       'William C. Powers Student Activity Center, 2201 Speedway, Austin, TX 78712, USA',
       'Life Science Library, Main, 2400 Inner Campus Drive #220, Austin, TX 78712, USA',
       'Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA',
       'The Union (outside)',
       'Engineering Education and Research Center (EER), 2501 Speedway, Austin, TX 78712, USA',
       'EER w/ Hannah',
       'McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA',
       'Mezes Hall, The University of Texas at Austin, 154 W 21st St, Austin, TX 78712, USA',
       'GDC', 'Home',
       'Peter T. Flawn Academic Center (FAC), 2304 Whitis Ave, Austin, TX 78712, USA',
       'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA',
       'PCL w/ Christine and Anjie'], dtype=object)
labeled_blocks.loc[labeled_blocks["location"].isin(['PCL 4.424', 'PCL 4.110', 
                                                    'PCL 3.110', 'PCL w/ Christine and Anjie', "PCL 4th",
                                                    'Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA']), 'location'] = "PCL"
labeled_blocks.loc[labeled_blocks["location"].isin(["WCP ", 
                                                    'William C. Powers Student Activity Center, 2201 Speedway, Austin, TX 78712, USA']), 'location'] = "WCP"
labeled_blocks.loc[labeled_blocks["location"].isin(['EER w/ Hannah', 
                                                    'Engineering Education and Research Center (EER), 2501 Speedway, Austin, TX 78712, USA']), 'location'] = "EER"
labeled_blocks.loc[labeled_blocks["location"].isin(['GDC 7th', 'GDC SDS Lounge']), 'location'] = "GDC"
labeled_blocks.loc[labeled_blocks["location"].isin(['Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA']), 'location'] = "Welch"
labeled_blocks.loc[labeled_blocks["location"].isin(['Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA']), 'location'] = "Fine Arts Library"
labeled_blocks.loc[labeled_blocks["location"].isin(['McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA']), 'location'] = "McKinney Engineering Library"
labeled_blocks.loc[labeled_blocks["location"].isin(['Life Science Library, Main, 2400 Inner Campus Drive #220, Austin, TX 78712, USA']), 'location'] = "Life Sciences Library"
labeled_blocks.loc[labeled_blocks["location"].isin(['Jackson School of Geoscience (JGB), 305 E 23rd St, Austin, TX 78712, USA']), 'location'] = "JGB"
labeled_blocks.loc[labeled_blocks["location"].isin(['Peter T. Flawn Academic Center (FAC), 2304 Whitis Ave, Austin, TX 78712, USA']), 'location'] = "FAC"
# generalize these
locations = labeled_blocks.groupby("location")[["minutes", "hours"]].sum().sort_values("minutes", ascending=False)
campus_locations = locations.loc[["WCP", "EER", "PCL", "Fine Arts Library", "McKinney Engineering Library", "Welch", "Life Sciences Library", "GDC", "ECJ", "FAC", "JGB"]]
campus_locations
minutes hours
location
WCP 15106.0 251.766667
EER 4573.0 76.216667
PCL 3095.0 51.583333
Fine Arts Library 855.0 14.250000
McKinney Engineering Library 730.0 12.166667
Welch 610.0 10.166667
Life Sciences Library 235.0 3.916667
GDC 205.0 3.416667
ECJ 90.0 1.500000
FAC 45.0 0.750000
JGB 45.0 0.750000
campus_locations = campus_locations.reset_index()
top_locations = locations.iloc[:10]
top_locations
minutes hours
location
WCP 14956.0 249.266667
EER 4428.0 73.800000
PCL 2190.0 36.500000
Dorm 865.0 14.416667
Fine Arts Library, 2306 Trinity St, Austin, TX 78712, USA 855.0 14.250000
McKinney Engineering Library, 2501 Speedway, Austin, TX 78712, USA 730.0 12.166667
Welch 370.0 6.166667
Home 265.0 4.416667
Perry-Castañeda Library, 101 E 21st St, Austin, TX 78712, USA 255.0 4.250000
Robert A. Welch Hall, 105 E 24th St, Austin, TX 78712, USA 240.0 4.000000
campus_locations.iloc[[0]]["location"].values[0]
'WCP'
fig = go.Figure(data=[go.Pie(labels=top_locations.index, 
                             values=top_locations["minutes"], 
                             hole=.2,
                             marker=dict(line=dict(color="black", width=1)),
                             hovertemplate=('<b>%{label}</b><br>' 
                                            'Minutes: %{value}<br>' 
                                            'Pct.: %{percent:.2%}<br>' 
                                            '<extra></extra>'))])
fig.update_layout(title = "Time Distribution by Label")
fig.show()
developing = labeled_blocks[labeled_blocks["category"] == "Developing"]
developing
name label start end hours minutes location category
45 Update tayLyrics None 2024-02-07 11:00:00-06:00 2024-02-07 12:15:00-06:00 1.250000 75.0 WCP Developing
79 Update tayLyrics None 2024-02-18 17:15:00-06:00 2024-02-18 18:00:00-06:00 0.750000 45.0 None Developing
94 tayLyrics updates None 2024-02-22 12:00:00-06:00 2024-02-22 12:15:00-06:00 0.250000 15.0 WCP Developing
95 tayLyrics updates None 2024-02-22 17:00:00-06:00 2024-02-22 18:15:00-06:00 1.250000 75.0 PCL Developing
135 Starting taylor_naive_bayes! None 2024-03-05 18:00:00-06:00 2024-03-05 19:00:00-06:00 1.000000 60.0 EER Developing
136 Play around w/ taylor_naive_bayes None 2024-03-05 22:30:00-06:00 2024-03-05 23:00:00-06:00 0.500000 30.0 None Developing
137 taylor_naive_bayes None 2024-03-06 09:00:00-06:00 2024-03-06 10:00:00-06:00 1.000000 60.0 WCP Developing
139 taylor_naive_bayes None 2024-03-06 13:00:00-06:00 2024-03-06 13:45:00-06:00 0.750000 45.0 WCP Developing
141 taylor_naive_bayes None 2024-03-06 16:15:00-06:00 2024-03-06 16:40:00-06:00 0.416667 25.0 PCL Developing
143 taylor_naive_bayes script None 2024-03-06 23:45:00-06:00 2024-03-07 00:25:00-06:00 0.666667 40.0 None Developing
205 Scraping genius lyrics None 2024-04-04 11:15:00-05:00 2024-04-04 12:15:00-05:00 1.000000 60.0 WCP Developing
216 Waterparks lyrics scraping None 2024-04-09 09:05:00-05:00 2024-04-09 09:20:00-05:00 0.250000 15.0 WCP Developing
221 Waterparks lyrics data cleaning None 2024-04-10 09:10:00-05:00 2024-04-10 09:50:00-05:00 0.666667 40.0 WCP Developing
265 Waterparks lyric scraper None 2024-05-20 14:00:00-05:00 2024-05-20 19:00:00-05:00 5.000000 300.0 None Developing
266 Waterparks lyrics game None 2024-05-21 13:00:00-05:00 2024-05-21 13:30:00-05:00 0.500000 30.0 None Developing
267 Waterparks lyrics game None 2024-05-21 14:30:00-05:00 2024-05-21 17:15:00-05:00 2.750000 165.0 None Developing
268 Waterparks lyrics game x read JURPA revision None 2024-05-22 15:00:00-05:00 2024-05-22 15:45:00-05:00 0.750000 45.0 None Developing
303 internshipDatabase None 2024-06-22 23:00:00-05:00 2024-06-23 01:20:00-05:00 2.333333 140.0 None Developing
308 tayLyrics -> streamlit None 2024-06-24 23:45:00-05:00 2024-06-25 00:30:00-05:00 0.750000 45.0 None Developing
330 tayLyrics None 2024-07-07 21:30:00-05:00 2024-07-07 23:00:00-05:00 1.500000 90.0 None Developing
397 tayLyrics - AWS None 2024-08-23 02:00:00-05:00 2024-08-23 03:05:00-05:00 1.083333 65.0 None Developing
401 tayLyrics - added hints limit None 2024-08-26 12:05:00-05:00 2024-08-26 13:45:00-05:00 1.666667 100.0 Welch Developing
423 lyriguessr - promo graphics None 2024-09-08 01:30:00-05:00 2024-09-08 03:00:00-05:00 1.500000 90.0 None Developing
431 lyriguessr promo None 2024-09-10 17:20:00-05:00 2024-09-10 18:00:00-05:00 0.666667 40.0 EER Developing
432 Misc. - lyriguessr promo, Apple app., Chevron ... None 2024-09-11 09:00:00-05:00 2024-09-11 10:30:00-05:00 1.500000 90.0 WCP Developing
435 Misc. - tayLyrics promo, HTTP vids None 2024-09-12 09:00:00-05:00 2024-09-12 09:30:00-05:00 0.500000 30.0 WCP Developing
440 lyriguessr - analytics, Sabrina dataset None 2024-09-16 10:00:00-05:00 2024-09-16 11:25:00-05:00 1.416667 85.0 WCP Developing
441 tayLyrics promo None 2024-09-16 11:30:00-05:00 2024-09-16 12:00:00-05:00 0.500000 30.0 WCP Developing
450 tayLyrics promo None 2024-09-18 10:45:00-05:00 2024-09-18 11:10:00-05:00 0.416667 25.0 WCP Developing
452 tayLyrics promo (emailed Prof. Scala) None 2024-09-18 12:45:00-05:00 2024-09-18 13:00:00-05:00 0.250000 15.0 WCP Developing
453 lyriguessr promo None 2024-09-18 15:45:00-05:00 2024-09-18 17:35:00-05:00 1.833333 110.0 McKinney Engineering Library Developing
456 Misc. - lyriguessr None 2024-09-19 09:15:00-05:00 2024-09-19 09:30:00-05:00 0.250000 15.0 WCP Developing
460 tayLyrics promo None 2024-09-23 09:00:00-05:00 2024-09-23 09:40:00-05:00 0.666667 40.0 WCP Developing
462 waterparksGuessr updates + promo None 2024-09-23 10:05:00-05:00 2024-09-23 10:30:00-05:00 0.416667 25.0 WCP Developing
468 lyriguessr - tried to set up a MAIN analytics ... None 2024-09-25 09:15:00-05:00 2024-09-25 10:15:00-05:00 1.000000 60.0 WCP Developing
495 internship_database - resources table None 2024-10-03 18:05:00-05:00 2024-10-03 18:30:00-05:00 0.416667 25.0 EER Developing
517 journal_analysis - example None 2024-10-10 14:00:00-05:00 2024-10-10 14:20:00-05:00 0.333333 20.0 WCP Developing
518 journal_analysis - started UI None 2024-10-10 16:05:00-05:00 2024-10-10 17:20:00-05:00 1.250000 75.0 McKinney Engineering Library Developing
530 tayLyrics promo None 2024-10-15 18:15:00-05:00 2024-10-15 18:55:00-05:00 0.666667 40.0 EER Developing
556 Misc. - encyclopedia (intergroup bias) None 2024-10-28 10:30:00-05:00 2024-10-28 11:45:00-05:00 1.250000 75.0 WCP Developing
557 Misc. - interview notes, encyclopedia None 2024-10-28 16:15:00-05:00 2024-10-28 17:00:00-05:00 0.750000 45.0 EER Developing
594 Encyclopedia - adding ideas to ideabank None 2024-11-18 13:00:00-06:00 2024-11-18 13:20:00-06:00 0.333333 20.0 WCP Developing
def label_dev(title):
    patterns = {
        "tayLyrics": r'\btayLyrics\b',
        "taylor_naive_bayes": r'\btaylor_naive_bayes\b',
        "waterparksGuessr": r'\b(waterparksGuessr|waterparks)\b', 
        "internship_database": r'\b(internship_database|internshipDatabase)\b',
        "journal_analysis": r'\bjournal_analysis\b',
        "Encyclopedia": r'\bEncyclopedia\b',
        "lyriguessr": r'\blyriguessr\b',
    }

    for label, pattern in patterns.items():
        if re.search(pattern, title, re.IGNORECASE): 
            return label
    return None
developing['project'] = developing["name"].apply(label_dev)
developing
/tmp/ipykernel_462555/2286357659.py:1: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
name label start end hours minutes location category project
45 Update tayLyrics None 2024-02-07 11:00:00-06:00 2024-02-07 12:15:00-06:00 1.250000 75.0 WCP Developing tayLyrics
79 Update tayLyrics None 2024-02-18 17:15:00-06:00 2024-02-18 18:00:00-06:00 0.750000 45.0 None Developing tayLyrics
94 tayLyrics updates None 2024-02-22 12:00:00-06:00 2024-02-22 12:15:00-06:00 0.250000 15.0 WCP Developing tayLyrics
95 tayLyrics updates None 2024-02-22 17:00:00-06:00 2024-02-22 18:15:00-06:00 1.250000 75.0 PCL Developing tayLyrics
135 Starting taylor_naive_bayes! None 2024-03-05 18:00:00-06:00 2024-03-05 19:00:00-06:00 1.000000 60.0 EER Developing taylor_naive_bayes
136 Play around w/ taylor_naive_bayes None 2024-03-05 22:30:00-06:00 2024-03-05 23:00:00-06:00 0.500000 30.0 None Developing taylor_naive_bayes
137 taylor_naive_bayes None 2024-03-06 09:00:00-06:00 2024-03-06 10:00:00-06:00 1.000000 60.0 WCP Developing taylor_naive_bayes
139 taylor_naive_bayes None 2024-03-06 13:00:00-06:00 2024-03-06 13:45:00-06:00 0.750000 45.0 WCP Developing taylor_naive_bayes
141 taylor_naive_bayes None 2024-03-06 16:15:00-06:00 2024-03-06 16:40:00-06:00 0.416667 25.0 PCL Developing taylor_naive_bayes
143 taylor_naive_bayes script None 2024-03-06 23:45:00-06:00 2024-03-07 00:25:00-06:00 0.666667 40.0 None Developing taylor_naive_bayes
205 Scraping genius lyrics None 2024-04-04 11:15:00-05:00 2024-04-04 12:15:00-05:00 1.000000 60.0 WCP Developing None
216 Waterparks lyrics scraping None 2024-04-09 09:05:00-05:00 2024-04-09 09:20:00-05:00 0.250000 15.0 WCP Developing waterparksGuessr
221 Waterparks lyrics data cleaning None 2024-04-10 09:10:00-05:00 2024-04-10 09:50:00-05:00 0.666667 40.0 WCP Developing waterparksGuessr
265 Waterparks lyric scraper None 2024-05-20 14:00:00-05:00 2024-05-20 19:00:00-05:00 5.000000 300.0 None Developing waterparksGuessr
266 Waterparks lyrics game None 2024-05-21 13:00:00-05:00 2024-05-21 13:30:00-05:00 0.500000 30.0 None Developing waterparksGuessr
267 Waterparks lyrics game None 2024-05-21 14:30:00-05:00 2024-05-21 17:15:00-05:00 2.750000 165.0 None Developing waterparksGuessr
268 Waterparks lyrics game x read JURPA revision None 2024-05-22 15:00:00-05:00 2024-05-22 15:45:00-05:00 0.750000 45.0 None Developing waterparksGuessr
303 internshipDatabase None 2024-06-22 23:00:00-05:00 2024-06-23 01:20:00-05:00 2.333333 140.0 None Developing internship_database
308 tayLyrics -> streamlit None 2024-06-24 23:45:00-05:00 2024-06-25 00:30:00-05:00 0.750000 45.0 None Developing tayLyrics
330 tayLyrics None 2024-07-07 21:30:00-05:00 2024-07-07 23:00:00-05:00 1.500000 90.0 None Developing tayLyrics
397 tayLyrics - AWS None 2024-08-23 02:00:00-05:00 2024-08-23 03:05:00-05:00 1.083333 65.0 None Developing tayLyrics
401 tayLyrics - added hints limit None 2024-08-26 12:05:00-05:00 2024-08-26 13:45:00-05:00 1.666667 100.0 Welch Developing tayLyrics
423 lyriguessr - promo graphics None 2024-09-08 01:30:00-05:00 2024-09-08 03:00:00-05:00 1.500000 90.0 None Developing lyriguessr
431 lyriguessr promo None 2024-09-10 17:20:00-05:00 2024-09-10 18:00:00-05:00 0.666667 40.0 EER Developing lyriguessr
432 Misc. - lyriguessr promo, Apple app., Chevron ... None 2024-09-11 09:00:00-05:00 2024-09-11 10:30:00-05:00 1.500000 90.0 WCP Developing lyriguessr
435 Misc. - tayLyrics promo, HTTP vids None 2024-09-12 09:00:00-05:00 2024-09-12 09:30:00-05:00 0.500000 30.0 WCP Developing tayLyrics
440 lyriguessr - analytics, Sabrina dataset None 2024-09-16 10:00:00-05:00 2024-09-16 11:25:00-05:00 1.416667 85.0 WCP Developing lyriguessr
441 tayLyrics promo None 2024-09-16 11:30:00-05:00 2024-09-16 12:00:00-05:00 0.500000 30.0 WCP Developing tayLyrics
450 tayLyrics promo None 2024-09-18 10:45:00-05:00 2024-09-18 11:10:00-05:00 0.416667 25.0 WCP Developing tayLyrics
452 tayLyrics promo (emailed Prof. Scala) None 2024-09-18 12:45:00-05:00 2024-09-18 13:00:00-05:00 0.250000 15.0 WCP Developing tayLyrics
453 lyriguessr promo None 2024-09-18 15:45:00-05:00 2024-09-18 17:35:00-05:00 1.833333 110.0 McKinney Engineering Library Developing lyriguessr
456 Misc. - lyriguessr None 2024-09-19 09:15:00-05:00 2024-09-19 09:30:00-05:00 0.250000 15.0 WCP Developing lyriguessr
460 tayLyrics promo None 2024-09-23 09:00:00-05:00 2024-09-23 09:40:00-05:00 0.666667 40.0 WCP Developing tayLyrics
462 waterparksGuessr updates + promo None 2024-09-23 10:05:00-05:00 2024-09-23 10:30:00-05:00 0.416667 25.0 WCP Developing waterparksGuessr
468 lyriguessr - tried to set up a MAIN analytics ... None 2024-09-25 09:15:00-05:00 2024-09-25 10:15:00-05:00 1.000000 60.0 WCP Developing lyriguessr
495 internship_database - resources table None 2024-10-03 18:05:00-05:00 2024-10-03 18:30:00-05:00 0.416667 25.0 EER Developing internship_database
517 journal_analysis - example None 2024-10-10 14:00:00-05:00 2024-10-10 14:20:00-05:00 0.333333 20.0 WCP Developing journal_analysis
518 journal_analysis - started UI None 2024-10-10 16:05:00-05:00 2024-10-10 17:20:00-05:00 1.250000 75.0 McKinney Engineering Library Developing journal_analysis
530 tayLyrics promo None 2024-10-15 18:15:00-05:00 2024-10-15 18:55:00-05:00 0.666667 40.0 EER Developing tayLyrics
556 Misc. - encyclopedia (intergroup bias) None 2024-10-28 10:30:00-05:00 2024-10-28 11:45:00-05:00 1.250000 75.0 WCP Developing Encyclopedia
557 Misc. - interview notes, encyclopedia None 2024-10-28 16:15:00-05:00 2024-10-28 17:00:00-05:00 0.750000 45.0 EER Developing Encyclopedia
594 Encyclopedia - adding ideas to ideabank None 2024-11-18 13:00:00-06:00 2024-11-18 13:20:00-06:00 0.333333 20.0 WCP Developing Encyclopedia
dev_time = developing[~developing["project"].isna()].groupby("project")[["minutes", "hours"]].sum().sort_values("minutes", ascending=False)
dev_time
minutes hours
project
tayLyrics 690.0 11.500000
waterparksGuessr 620.0 10.333333
lyriguessr 490.0 8.166667
taylor_naive_bayes 260.0 4.333333
internship_database 165.0 2.750000
Encyclopedia 140.0 2.333333
journal_analysis 95.0 1.583333
fig = go.Figure([go.Bar(x=dev_time.index, 
                        y=dev_time["minutes"],
                        marker=dict(# color=week_colors,
                                    line=dict(color="black", width=1.5)), 
                        hovertemplate=('<b>%{label}</b><br>' 
                                        'Minutes: %{value}<br>' 
                                        '<extra></extra>'))],
                layout=dict(barcornerradius=15))

# fig.update_layout(title = "Gym Sessions by Day of Week")
fig.show()
ff = events_df[events_df["label"] == "Family/Friends"]
ff
name label start end hours minutes location
2 Lunch w/ family (inc. Jennifer) Family/Friends 2024-01-04 13:00:00-06:00 2024-01-04 14:45:00-06:00 1.750000 105.0 Feast Buffet, 1707 N Fry Rd, Katy, TX 77449, USA
5 Call Jiant Family/Friends 2024-01-17 20:00:00-06:00 2024-01-17 21:00:00-06:00 1.000000 60.0 None
7 Night out w/ Hannah and friends Family/Friends 2024-01-19 21:30:00-06:00 2024-01-20 03:00:00-06:00 5.500000 330.0 None
8 Call parents Family/Friends 2024-01-21 21:15:00-06:00 2024-01-21 21:35:00-06:00 0.333333 20.0 None
12 Dinner w/ Hannah Family/Friends 2024-01-25 19:30:00-06:00 2024-01-25 20:15:00-06:00 0.750000 45.0 J2
... ... ... ... ... ... ... ...
709 Lunch w/ Yinin's family Family/Friends 2024-12-28 11:00:00-06:00 2024-12-28 16:00:00-06:00 5.000000 300.0 None
711 Volleyball w/ Hannah Family/Friends 2024-01-16 20:00:00-06:00 2024-01-16 21:30:00-06:00 1.500000 90.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
712 Volleyball Family/Friends 2024-02-01 21:30:00-06:00 2024-02-01 22:45:00-06:00 1.250000 75.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...
713 Volleyball w/ Hannah + Lauren Family/Friends 2024-01-17 22:15:00-06:00 2024-01-18 00:00:00-06:00 1.750000 105.0 None
714 Volleyball w/ Hannah Family/Friends 2024-02-14 21:30:00-06:00 2024-02-14 22:00:00-06:00 0.500000 30.0 Gregory Gymnasium, 2101 Speedway, Austin, TX 7...

240 rows × 7 columns

import spacy
from spacy import displacy

NER = spacy.load("en_core_web_sm")
text = " ".join([entry for entry in ff["name"]])
doc = NER(text)
doc
Lunch w/ family (inc. Jennifer) Call Jiant Night out w/ Hannah and friends Call parents Dinner w/ Hannah Hannah's IM volleyball game Frolicking w/ Hannah Dinner (Cabo Bob's?) w/ Hannah Gathering at Aley's w/ Hannah Hannah's IM soccer game Dinner w/ Hannah Dinner w/ Hannah Dinner w/ Hannah Dinner w/ Hannah Austin Public Library w/ Hannah and Sydney Study w/ Hannah and Sydney Lunch w/ Hannah and Sydney Dinner w/ Hannah Hannah's IM soccer game Retrieve water bottle Hannah's IM volleyball game Watch IM basketball Quick trip to Chick-fil-a tayLyrics w/ Hannah! Dinner at Waipo's place CNY dinner at 爷爷奶奶's Dinner w/ Hannah Hannah's IM volleyball game Give Alex his gift Dinner w/ Hannah tayLyrics w/ Hannah! Movie + card games at Sydney's Dinner w/ Hannah and Lauren Dinner w/ the girls! Ping pong w/ Hannah and Lauren Volleyball w/ Hannah Dinner w/ Hannah tayLyrics w/ Hannah! Nature time w/ Hannah Hannah IM volleyball playoffs Texas THON Pancake Night Meet w/ Aley! Watch Hannah play volleyball Chick fil a w/ Hannah Trip to HEB w/ Hannah Chat w/ Hannah and Chang Dinner w/ Hannah tayLyrics w/ Hannah! Dinner w/ Hannah Lunch w/ Hannah Dinner w/ Hannah Movie w/ Hannah Tennis w/ Hannah, Sydney, Kenadi, and Lauren Jizza w/ Hannah and Lauren Saltburn w/ Hannah and Lauren Hannah's IM soccer playoffs Volleyball w/ Hannah Watch IM basketball Dead Poet's Society (1/2) w/ Hannah Dead Poet's Society (2/2) w/ Hannah Dinner w/ Hannah Lawn time w/ Hannah Dinner w/ Hannah tayLyrics w/ Hannah and Kenadi Lunch and shopping w/ 外婆 Visit 爷爷奶奶 w/ Justin Birthday dinner w/ family Dinner w/ Hannah Dinner w/ Hannah Visit Anjie Volleyball w/ Hannah, Kenadi, and Lauren Jester event w/ Hannah! Dinner w/ Hannah Hang out w/ Hannah and Lauren Cabo Bob's w/ Hannah, Sydney, Lauren, and Kenadi Maddie’s birthday party w/ Hannah Movie w/ Hannah and Lauren Dinner w/ Hannah Lunch w/ Hannah Family lunch @ Katy Asian Town Mall w/ family Party at Aley's Hang out w/ Authencia, Hannah, Batyr, Priyansh Dinner w/ Hannah and Authencia Dinner w/ Hannah and Authencia Volleyball w/ Hannah and Authencia Volleyball w/ Hannah and Authencia Volleyball w/ Authencia Lunch w/ Alex Lunch w/ Authencia Hang out w/ Batyr, Authencia, and Hannah Dinner w/ Hannah and Lauren Jasement w/ Hannah and Lauren Meet w/ Aley w/ Hannah and Lauren The Proposal w/ Lauren TTPD w/ Hannah and Andrew Hang out w/ Hannah and Kenadi Dinner w/ Hannah Lunch w/ Hannah Get Out w/ Hannah and Andrew Drive w/ Hannah, Kenadi, Lauren Lunch w/ Alex Group FT Dinner w/ Hannah and Lauren Hang out w/ Andrew and Hannah + watch Us Women in Psych profit share Dinner w/ Hannah Volleyball w/ Hannah Meet w/ Hannah @ EER Walk to Cabo Bob's w/ Hannah and Andrew #2 Hang out w/ Andrew ASBMB profit share w/ Hannah and Andrew Volleyball w/ Hannah and Andrew Hang out w/ Hannah and Andrew Lunch w/ Hannah, Lauren, and Nick HEB w/ Andrew Hang out w/ Andrew (+ watch Smile) Hang out w/ Hannah and Lauren Dinner w/ Hannah and Lauren Volleyball w/ Hannah and Lauren Hang out w/ Andrew Ochem review session w/ Lauren and Hannah (+ worked on Linguistics report) Dinner w/ Hannah and Lauren Hang out w/ Andrew Breakfast w/ Hannah Sonic run w/ Hannah and Lauren Hang out w/ Hannah and Lauren Movie night (Split) w/ Hannah, Lauren, and Andrew Hannah and Jasmine time Dinner w/ Jiant and Hannah Facetime Andrew Katy Mills w/ Anjie Facetime Andrew Mother's Day dinner w/ family Gathering at Anagaby’s w/ Hannah Dinner w Hannah and her family! Aquarium w/ Hannah Apartment shopping w/ Hannah Six Flags attempt Mommy's birthday dinner Dinner w/ family, 外婆外公, Flora Deliver wontons to Waipo + HEB trip Deliver chicken to 外婆 Visit Waipo to fill out I-9 sec. 2 Dinner w/ family, Liang, Logan, Luke Lunch w/ grandparents, Liang, Logan, Luke Typhoon Texas w/ Liang, Logan, Luke FaceTime Hannah FaceTime Alex Hang out at 爷爷奶奶's Chenlu's birthday lunch Alex arrives Hang out w/ Alex Lunch ish w/ Alex Drop Alex off Poker w/ Jiant, Justin, Alex Dinner w/ Alex Andretti w/ Alex Dessert & Kinokuniya w/ Alex Lunch w/ Alex Family poker Family poker Dinner at 外婆外公's tayLyrics w/ Hannah! Lunch + shopping w/ 外婆 Family poker tayLyrics w/ Hannah Dinner w/ Jiant and Justin Lunch w/ Cathy and family Lunch w/ parents Dinner w/ Hannah and family Dinner w/ Hannah tayLyrics w/ Hannah! Hang out w Hannah, Lauren, and Sydney Kenadi’s birthday dinner Board games w Hannah, Lauren, and Kenadi Coffee shop w Hannah, Sydney, and Lauren Dinner w/ Hannah Board games w Hannah, Lauren, and Kenadi Dinner w/ Hannah Games w/ Kenadi, Lauren, Hannah, Sydney Dinner w/ Hannah Get interviewed by Hannah Canon's apartment party Lauren's birthday dinner ADPi Tex-Mex Lunch w/ Hannah, Anthony, Sydney, Elsa ADPi Tex-Mex Lunch w/ Hannah and Anthony Lunch w/ family and Hannah Asian town w/ Hannah Visit Rebecca & cats w/ mommy, Justin, Hannah Compatibility w/ family and Hannah Pickleball w/ Jiant, Justin, Hannah Make dumplings and wontons w/ mommy and Hannah Six Flags w/ Hannah! BISH meetup w/ Hannah Hang out w Alex Hang out w Alex SDS Party Hang out w/ Alex Hang out w Authencia, Hannah, Batyr, Emma, Alex Halloween Party @ Aley's Halloweekend night out w/ Hannah, Sydney, Elsa, Jenny, Kaitlyn Hang out w Alex Hang out w/ Alex Sonic w/ Hannah and Lauren Texas Ice Hockey vs A&M w/ Hannah and Lauren Hang out w/ Justin, Justin's friends, and Marisa Hang out w/ Alex Hannah's IM volleyball game Shopping w/ Hannah Dinner w Hannah Pancake Night @ Pike w/ Hannah, Sydney, Lauren, Abby Hang out w/ Marisa University Orchestra Concert w/ Anjie :) Super Mario w/ Hannah :))) Super Mario w/ Hannah Facetime Alex Lunch + shopping w/ 外婆 and Justin Thanksgiving w/ family Family mahjong Shopping w/ mommy Lunch w/ Jiant and Justin Target run w/ Anjie, Olivia Gym w/ Anjie Hang out w/ Alex "Study" w/ Alex Dinner gathering w/ grandparents Family photos Gift shopping w/ Justin Family mahjong Board game night w/ Hannah, Lauren, Kenadi, Sydney, Dylan Family Christmas Gathering Gift opening w/ family Board game (Spy Alley) w/ family Dinner w/ Yanzi + family Lunch w/ Yinin's family Volleyball w/ Hannah Volleyball Volleyball w/ Hannah + Lauren Volleyball w/ Hannah
doc
Volleyball w/ Hannah
import string
import re
people = []
# missed = ["Aley", "Aley's", "Aley!", "Chenlu", "Waipo", "Nick", "Liang", "Logan", "Rebecca", 
#           "Anjie", "Olivia", "Batyr", "Priyansh"]
names = ['Hannah', 'Lauren', 'Alex', 'Kenadi', 'Andrew', 'Authencia', 'Liang', 'Logan', 'Luke', 
         'Aley', 'Batyr', 'Jiant', 'Justin', 'Anthony', 'Elsa', 'Marisa', 'Jennifer', 'Waipo', 
         'Chang', 'Maddie', 'Priyansh', 'Nick', 'Jasmine', 'Mommy', '外婆外公', 'Flora', 'Chenlu',
         'Emma', 'Jenny', 'Kaitlyn', 'Abby', 'Anjie', 'Olivia', 'Dylan', "Aley's"]

for entry in ff["name"]: 
    entry = re.sub(r'[^\w\s]','', entry)
    for word in entry.split():
        if word in names: 
            people.append(word)
    # doc = NER(entry)
    
    # for entity in doc.ents: 
    #     print(entity)
    #     if (entity.text in missed) or (entity.label_ == "PERSON" and len(entity.text.split()) == 1):
    #         people.append(entity.text)

people
['Jennifer',
 'Jiant',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Alex',
 'Hannah',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Aley',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Chang',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Kenadi',
 'Lauren',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Kenadi',
 'Justin',
 'Hannah',
 'Hannah',
 'Anjie',
 'Hannah',
 'Kenadi',
 'Lauren',
 'Hannah',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Kenadi',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah',
 'Hannah',
 'Authencia',
 'Hannah',
 'Batyr',
 'Priyansh',
 'Hannah',
 'Authencia',
 'Hannah',
 'Authencia',
 'Hannah',
 'Authencia',
 'Hannah',
 'Authencia',
 'Authencia',
 'Alex',
 'Authencia',
 'Batyr',
 'Authencia',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Aley',
 'Hannah',
 'Lauren',
 'Lauren',
 'Hannah',
 'Andrew',
 'Hannah',
 'Kenadi',
 'Hannah',
 'Hannah',
 'Hannah',
 'Andrew',
 'Hannah',
 'Kenadi',
 'Lauren',
 'Alex',
 'Hannah',
 'Lauren',
 'Andrew',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Andrew',
 'Andrew',
 'Hannah',
 'Andrew',
 'Hannah',
 'Andrew',
 'Hannah',
 'Andrew',
 'Hannah',
 'Lauren',
 'Nick',
 'Andrew',
 'Andrew',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Andrew',
 'Lauren',
 'Hannah',
 'Hannah',
 'Lauren',
 'Andrew',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Andrew',
 'Hannah',
 'Jasmine',
 'Jiant',
 'Hannah',
 'Andrew',
 'Anjie',
 'Andrew',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 '外婆外公',
 'Flora',
 'Waipo',
 'Waipo',
 'Liang',
 'Logan',
 'Luke',
 'Liang',
 'Logan',
 'Luke',
 'Liang',
 'Logan',
 'Luke',
 'Hannah',
 'Alex',
 'Alex',
 'Alex',
 'Alex',
 'Alex',
 'Jiant',
 'Justin',
 'Alex',
 'Alex',
 'Alex',
 'Alex',
 'Alex',
 'Hannah',
 'Hannah',
 'Jiant',
 'Justin',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Kenadi',
 'Hannah',
 'Lauren',
 'Hannah',
 'Hannah',
 'Lauren',
 'Kenadi',
 'Hannah',
 'Kenadi',
 'Lauren',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Anthony',
 'Elsa',
 'Hannah',
 'Anthony',
 'Hannah',
 'Hannah',
 'Justin',
 'Hannah',
 'Hannah',
 'Jiant',
 'Justin',
 'Hannah',
 'Hannah',
 'Hannah',
 'Hannah',
 'Alex',
 'Alex',
 'Alex',
 'Authencia',
 'Hannah',
 'Batyr',
 'Emma',
 'Alex',
 'Hannah',
 'Elsa',
 'Jenny',
 'Kaitlyn',
 'Alex',
 'Alex',
 'Hannah',
 'Lauren',
 'Hannah',
 'Lauren',
 'Justin',
 'Marisa',
 'Alex',
 'Hannah',
 'Hannah',
 'Hannah',
 'Lauren',
 'Abby',
 'Marisa',
 'Anjie',
 'Hannah',
 'Hannah',
 'Alex',
 'Justin',
 'Jiant',
 'Justin',
 'Anjie',
 'Olivia',
 'Anjie',
 'Alex',
 'Alex',
 'Justin',
 'Hannah',
 'Lauren',
 'Kenadi',
 'Dylan',
 'Hannah',
 'Hannah',
 'Lauren',
 'Hannah']
# spacy.displacy.render(doc, style="ent")
# remove = ["Gift", "Linguistics", "Lunch", "Split", "Ping"]
# people = [p for p in people if p not in remove]
# people
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text = " ".join(people)
wordcloud = WordCloud(background_color='white', stopwords=["s"], collocations=False).generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

import numpy as np  # Needed for logarithm or square root

def plotly_wordcloud(text):
    wc = WordCloud(stopwords=set(list(STOPWORDS) + ['s']),
                   max_words=200,
                   max_font_size=100, 
                   collocations=False)
    wc.generate(text)
    print(wc.words_)
    
    word_list = []
    freq_list = []
    fontsize_list = []
    position_list = []
    orientation_list = []
    color_list = []

    for (word, freq), fontsize, position, orientation, color in wc.layout_:
        word_list.append(word)
        freq_list.append(freq)
        fontsize_list.append(fontsize)
        position_list.append(position)
        orientation_list.append(orientation)
        color_list.append(color)
        
    # Get positions
    x = [pos[0] for pos in position_list]
    y = [pos[1] for pos in position_list]
    
    # Apply normalization to frequencies
    max_size = 50  # Maximum font size
    min_size = 10  # Minimum font size
    
    # Normalize using logarithmic scale
    # new_freq_list = [np.log(freq + 1) for freq in freq_list]  # Add 1 to avoid log(0)
    new_freq_list = freq_list
    
    # Scale to font sizes
    max_freq = max(new_freq_list)
    min_freq = min(new_freq_list)
    scaled_sizes = [
        min_size + (max_size - min_size) * ((freq - min_freq) / (max_freq - min_freq))
        for freq in new_freq_list]

    x = []
    y = []
    for i in position_list:
        x.append(i[0])
        y.append(i[1])
    
    # Determine the range of x and y values for padding
    x_min, x_max = min(x), max(x)
    y_min, y_max = min(y), max(y)
    x_padding = (x_max - x_min) * 0.5  # Add 10% padding on both sides
    y_padding = (y_max - y_min) * 0.5
    
    trace = go.Scatter(
        x=x,
        y=y,
        textfont=dict(size=scaled_sizes, color=color_list),
        hoverinfo='text',
        hovertext=['{0}: {1}'.format(w, int(f / 0.008)) for w, f in zip(word_list, freq_list)],
        mode='text',
        text=word_list
    )
    
    layout = go.Layout(
        {
            'xaxis': {'showgrid': False, 'showticklabels': False, 'zeroline': False, 'range': [x_min - x_padding, x_max + x_padding]},
            'yaxis': {'showgrid': False, 'showticklabels': False, 'zeroline': False, 'range': [y_min - y_padding, y_max + y_padding]},
            "margin": {'l': 5, 'r': 5, 't': 5, 'b': 5},  # Reduce margins
            "height": 250,  # Adjust height
            "width": 250    # Adjust width
        }
    )
    
    fig = go.Figure(data=[trace], layout=layout)
    
    return fig
from plotly.offline import iplot, init_notebook_mode
plotly_wordcloud(text)
{'Hannah': 1.0, 'Lauren': 0.224, 'Alex': 0.096, 'Kenadi': 0.072, 'Andrew': 0.072, 'Authencia': 0.048, 'Liang': 0.024, 'Logan': 0.024, 'Luke': 0.024, 'Aley': 0.016, 'Batyr': 0.016, 'Jiant': 0.016, 'Justin': 0.016, 'Anthony': 0.016, 'Elsa': 0.016, 'Marisa': 0.016, 'Jennifer': 0.008, 'Waipo': 0.008, 'Chang': 0.008, 'Maddie': 0.008, 'Priyansh': 0.008, 'Nick': 0.008, 'Jasmine': 0.008, 'Mommy': 0.008, '外婆外公': 0.008, 'Flora': 0.008, 'Chenlu': 0.008, 'Emma': 0.008, 'Jenny': 0.008, 'Kaitlyn': 0.008, 'Abby': 0.008, 'Anjie': 0.008, 'Olivia': 0.008, 'Dylan': 0.008}
np.unique(people)
array(['Abby', 'Alex', 'Aley', 'Andrew', 'Anjie', 'Anthony', 'Authencia',
       'Batyr', 'Chang', 'Dylan', 'Elsa', 'Emma', 'Flora', 'Hannah',
       'Jasmine', 'Jennifer', 'Jenny', 'Jiant', 'Justin', 'Kaitlyn',
       'Kenadi', 'Lauren', 'Liang', 'Logan', 'Luke', 'Marisa', 'Nick',
       'Olivia', 'Priyansh', 'Waipo', '外婆外公'], dtype='<U9')
text = " ".join(people)
wc = WordCloud(stopwords=set(list(STOPWORDS) + ['s']),
               max_words=200,
               max_font_size=100, 
               collocations=False)
wc.generate(text)
word_data = wc.words_
word_data
{'Hannah': 1.0,
 'Lauren': 0.2556390977443609,
 'Alex': 0.17293233082706766,
 'Andrew': 0.11278195488721804,
 'Kenadi': 0.07518796992481203,
 'Justin': 0.06766917293233082,
 'Authencia': 0.06766917293233082,
 'Jiant': 0.045112781954887216,
 'Anjie': 0.03759398496240601,
 'Batyr': 0.022556390977443608,
 'Liang': 0.022556390977443608,
 'Logan': 0.022556390977443608,
 'Luke': 0.022556390977443608,
 'Aley': 0.015037593984962405,
 'Waipo': 0.015037593984962405,
 'Anthony': 0.015037593984962405,
 'Elsa': 0.015037593984962405,
 'Marisa': 0.015037593984962405,
 'Jennifer': 0.007518796992481203,
 'Chang': 0.007518796992481203,
 'Priyansh': 0.007518796992481203,
 'Nick': 0.007518796992481203,
 'Jasmine': 0.007518796992481203,
 '外婆外公': 0.007518796992481203,
 'Flora': 0.007518796992481203,
 'Emma': 0.007518796992481203,
 'Jenny': 0.007518796992481203,
 'Kaitlyn': 0.007518796992481203,
 'Abby': 0.007518796992481203,
 'Olivia': 0.007518796992481203,
 'Dylan': 0.007518796992481203}
word_data
[{'tag': 'Hannah', 'weight': 1.0},
 {'tag': 'Lauren', 'weight': 0.224},
 {'tag': 'Alex', 'weight': 0.096},
 {'tag': 'Kenadi', 'weight': 0.072},
 {'tag': 'Andrew', 'weight': 0.072},
 {'tag': 'Authencia', 'weight': 0.048},
 {'tag': 'Liang', 'weight': 0.024},
 {'tag': 'Logan', 'weight': 0.024},
 {'tag': 'Luke', 'weight': 0.024},
 {'tag': 'Aley', 'weight': 0.016},
 {'tag': 'Jiant', 'weight': 0.016},
 {'tag': 'Justin', 'weight': 0.016},
 {'tag': 'Anthony', 'weight': 0.016},
 {'tag': 'Elsa', 'weight': 0.016},
 {'tag': 'Marisa', 'weight': 0.016},
 {'tag': 'Jennifer', 'weight': 0.008},
 {'tag': 'Waipo', 'weight': 0.008},
 {'tag': 'Chang', 'weight': 0.008},
 {'tag': 'Maddie', 'weight': 0.008},
 {'tag': 'Nick', 'weight': 0.008},
 {'tag': 'Jasmine', 'weight': 0.008},
 {'tag': 'Mommy', 'weight': 0.008},
 {'tag': '外婆外公', 'weight': 0.008},
 {'tag': 'Flora', 'weight': 0.008},
 {'tag': 'Chenlu', 'weight': 0.008},
 {'tag': 'Emma', 'weight': 0.008},
 {'tag': 'Jenny', 'weight': 0.008},
 {'tag': 'Kaitlyn', 'weight': 0.008},
 {'tag': 'Abby', 'weight': 0.008},
 {'tag': 'Anjie', 'weight': 0.008},
 {'tag': 'Olivia', 'weight': 0.008},
 {'tag': 'Dylan', 'weight': 0.008}]
from IPython.display import display, HTML

# HTML, CSS, and JavaScript for the amCharts word cloud without title and reduced margins
html_content = """
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Word Cloud</title>
  
  <!-- Include amCharts scripts -->
  <script src="//cdn.amcharts.com/lib/5/index.js"></script>
  <script src="//cdn.amcharts.com/lib/5/wc.js"></script>
  <script src="//cdn.amcharts.com/lib/5/themes/Animated.js"></script>
  
  <style>
  @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900&display=swap');
    body {
      font-family: 'Outfit', sans-serif;
      margin: 0;
      padding: 0;
    }
    #chartdiv {
      width: 100%;
      height: 100vh;  /* Use the full viewport height */
      margin: 0;      /* Remove margins around the chart */
    }
  </style>
</head>
<body>
  <!-- Container for the chart -->
  <div id="chartdiv"></div>

  <script>
    var root = am5.Root.new("chartdiv");

    root.setThemes([
      am5themes_Animated.new(root)
    ]);

    var container = root.container.children.push(am5.Container.new(root, {
      width: am5.percent(100),
      height: am5.percent(100),
      layout: root.verticalLayout,
      paddingTop: 0,  // Remove top padding
      paddingBottom: 0,  // Remove bottom padding
      paddingLeft: 0,  // Remove left padding
      paddingRight: 0  // Remove right padding
    }));

    var series = container.children.push(am5wc.WordCloud.new(root, {
      categoryField: "tag",
      valueField: "weight",
      calculateAggregates: true
    }));

    series.set("heatRules", [{
      target: series.labels.template,
      dataField: "value",
      min: am5.color(0xffd4c2),
      max: am5.color(0xff621f),
      key: "fill"
    }]);

    series.labels.template.setAll({
      paddingTop: 5,
      paddingBottom: 5,
      paddingLeft: 5,
      paddingRight: 5,
      fontFamily: "Outfit, sans-serif",  // Font changed to the imported font
      cursorOverStyle: "default",  // No pointer cursor (no click interaction)
      setStateOnChildren: true,
      interactive: false,  // Disable interaction (no clicks)
      tooltipText: "{tag}: {ratio}"  // Show category and ratio in tooltip
    });

    // Create the tooltip with the frequency divided by 0.008
    series.labels.template.set("tooltipText", "{tag}: {ratio})");

    series.labels.template.setup = function(target) {
      var bg = target.set("background", am5.RoundedRectangle.new(root, {
        fill: am5.color(0x000000)
      }));

      bg.states.create("hover", {
        fill: am5.color(0xff621f)
      });
    }

    series.labels.template.states.create("hover", {
      fill: am5.color(0xffffff)
    });

    // Data with added 'ratio' field (weight / 0.008)
    series.data.setAll([
      {'tag': 'Hannah', 'weight': 1.0, 'ratio': 1.0 / 0.008},
      {'tag': 'Lauren', 'weight': 0.224, 'ratio': 0.224 / 0.008},
      {'tag': 'Alex', 'weight': 0.096, 'ratio': 0.096 / 0.008},
      {'tag': 'Kenadi', 'weight': 0.072, 'ratio': 0.072 / 0.008},
      {'tag': 'Andrew', 'weight': 0.072, 'ratio': 0.072 / 0.008},
      {'tag': 'Authencia', 'weight': 0.048, 'ratio': 0.048 / 0.008},
      {'tag': 'Liang', 'weight': 0.024, 'ratio': 0.024 / 0.008},
      {'tag': 'Logan', 'weight': 0.024, 'ratio': 0.024 / 0.008},
      {'tag': 'Luke', 'weight': 0.024, 'ratio': 0.024 / 0.008},
      {'tag': 'Aley', 'weight': 0.016, 'ratio': 0.016 / 0.008},
      {'tag': 'Jiant', 'weight': 0.016, 'ratio': 0.016 / 0.008},
      {'tag': 'Justin', 'weight': 0.016, 'ratio': 0.016 / 0.008},
      {'tag': 'Anthony', 'weight': 0.016, 'ratio': 0.016 / 0.008},
      {'tag': 'Elsa', 'weight': 0.016, 'ratio': 0.016 / 0.008},
      {'tag': 'Marisa', 'weight': 0.016, 'ratio': 0.016 / 0.008},
      {'tag': 'Jennifer', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Waipo', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Chang', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Maddie', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Nick', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Jasmine', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Mommy', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': '外婆外公', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Flora', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Chenlu', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Emma', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Jenny', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Kaitlyn', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Abby', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Anjie', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Olivia', 'weight': 0.008, 'ratio': 0.008 / 0.008},
      {'tag': 'Dylan', 'weight': 0.008, 'ratio': 0.008 / 0.008}
    ]);
  </script>
</body>
</html>
"""

# Display the word cloud in the notebook
display(HTML(html_content))
Word Cloud
word_data_json
'[{"tag": "Hannah", "weight": 1.0}, {"tag": "Lauren", "weight": 0.224}, {"tag": "Alex", "weight": 0.096}, {"tag": "Kenadi", "weight": 0.072}, {"tag": "Andrew", "weight": 0.072}, {"tag": "Authencia", "weight": 0.048}, {"tag": "Liang", "weight": 0.024}, {"tag": "Logan", "weight": 0.024}, {"tag": "Luke", "weight": 0.024}, {"tag": "Aley", "weight": 0.016}, {"tag": "Batyr", "weight": 0.016}, {"tag": "Jiant", "weight": 0.016}, {"tag": "Justin", "weight": 0.016}, {"tag": "Anthony", "weight": 0.016}, {"tag": "Elsa", "weight": 0.016}, {"tag": "Marisa", "weight": 0.016}, {"tag": "Jennifer", "weight": 0.008}, {"tag": "Waipo", "weight": 0.008}, {"tag": "Chang", "weight": 0.008}, {"tag": "Maddie", "weight": 0.008}, {"tag": "Priyansh", "weight": 0.008}, {"tag": "Nick", "weight": 0.008}, {"tag": "Jasmine", "weight": 0.008}, {"tag": "Mommy", "weight": 0.008}, {"tag": "\\u5916\\u5a46\\u5916\\u516c", "weight": 0.008}, {"tag": "Flora", "weight": 0.008}, {"tag": "Chenlu", "weight": 0.008}, {"tag": "Emma", "weight": 0.008}, {"tag": "Jenny", "weight": 0.008}, {"tag": "Kaitlyn", "weight": 0.008}, {"tag": "Abby", "weight": 0.008}, {"tag": "Anjie", "weight": 0.008}, {"tag": "Olivia", "weight": 0.008}, {"tag": "Dylan", "weight": 0.008}]'
import json
from IPython.display import display, HTML

# Convert the word_data dictionary to a list of dictionaries with 'tag' and 'weight'
word_data_list = [{'tag': name, 'weight': weight} for name, weight in word_data.items()]
div_by = min(word_data.values())

# Convert the list to a JSON string
word_data_json = json.dumps(word_data_list)

# HTML template with embedded word_data_json
html_content = f"""
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=0.8">
  <title>Word Cloud</title>
  
  <!-- Include amCharts scripts -->
  <script src="//cdn.amcharts.com/lib/5/index.js"></script>
  <script src="//cdn.amcharts.com/lib/5/wc.js"></script>
  <script src="//cdn.amcharts.com/lib/5/themes/Animated.js"></script>
  
  <style>
  @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900&display=swap');
    body {{
      font-family: 'Outfit', sans-serif;
      margin: 0;
      padding: 0;
    }}
    #chartdiv {{
      width: 100%;
      height: 100vh;  /* Use the full viewport height */
      margin: 0;      /* Remove margins around the chart */
    }}
  </style>
</head>
<body>
  <!-- Container for the chart -->
  <div id="chartdiv"></div>

  <script>
    var root = am5.Root.new("chartdiv");

    root.setThemes([
      am5themes_Animated.new(root)
    ]);

    var container = root.container.children.push(am5.Container.new(root, {{
      width: am5.percent(100),
      height: am5.percent(100),
      layout: root.verticalLayout,
      paddingTop: 0,  // Remove top padding
      paddingBottom: 0,  // Remove bottom padding
      paddingLeft: 0,  // Remove left padding
      paddingRight: 0  // Remove right padding
    }}));

    var series = container.children.push(am5wc.WordCloud.new(root, {{
      categoryField: "tag",
      valueField: "weight",
      calculateAggregates: true,
      minFontSize: am5.percent(5),
      maxFontSize: am5.percent(35)
    }}));

    series.set("heatRules", [{{
      target: series.labels.template,
      dataField: "value",
      min: am5.color(0xffd4c2),
      max: am5.color(0xff621f),
      key: "fill"
    }}]);

    series.labels.template.setAll({{
      paddingTop: 0,
      paddingBottom: 0,
      paddingLeft: 0,
      paddingRight: 0,
      fontFamily: "Outfit, sans-serif",  // Font changed to the imported font
      cursorOverStyle: "default",  // No pointer cursor (no click interaction)
      setStateOnChildren: true,
      interactive: false,  // Disable interaction (no clicks)
      tooltipText: "{{tag}}: {{ratio}}"  // Show category and ratio in tooltip
    }});

    series.labels.template.setup = function(target) {{
      var bg = target.set("background", am5.RoundedRectangle.new(root, {{
        fill: am5.color(0x000000),
        paddingTop: 0,
        paddingBottom: 0,
        paddingLeft: 0,
        paddingRight: 0,
      }}));

      bg.states.create("hover", {{
        fill: am5.color(0xff621f)
      }});
    }}

    series.labels.template.states.create("hover", {{
      fill: am5.color(0xffffff)
    }});

    // Data with added 'ratio' field 
    var data = {word_data_json};

    // Add the ratio field dynamically for each item in the data
    data.forEach(function(item) {{
      item.ratio = item.weight / {div_by};
    }});

    series.data.setAll(data);
  </script>
</body>
</html>
"""

# Display the word cloud in the notebook
display(HTML(html_content))
Word Cloud
html_file = "interactive_wordcloud.html"
with open(html_file, "w", encoding="utf-8") as file:
    file.write(html_content)